Привет, не понимаю в чем дело, но никак не могу удалить мьютекс, написал для удобства следующие функции, где я допустил ошибку?
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | function _MutexExists(Str: String ): Boolean ;
var
MyMutex: THandle;
begin
MyMutex := OpenMutex(MUTEX_ALL_ACCESS, FALSE , PChar (Str));
RESULT := (MyMutex <> 0 );
end ;
function _DeleteMutex(Str: String ): Boolean ;
var
MyMutex: THandle;
begin
RESULT := FALSE ;
MyMutex := OpenMutex(MUTEX_ALL_ACCESS, FALSE , PChar (Str));
if MyMutex <> 0 then
begin
RESULT := ReleaseMutex(MyMutex);
CloseHandle(MyMutex);
end ;
end ;
function _CreateMutex(Str: String ; DelIfExists: Boolean = true ): Boolean ;
var
MyMutex: THandle;
begin
if _MutexExists(Str) then
begin
if DelIfExists then
_DeleteMutex(Str);
end ;
MyMutex := CreateMutex( nil , FALSE , PChar (Str));
RESULT := (MyMutex <> 0 );
end ;
|