⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mutex.pas

📁 VC++实现的时间同步程序
💻 PAS
字号:
unit mutex;

interface

uses Windows, SysUtils;

function GetExclusivity(const Name: string): boolean;
procedure ReleaseExclusivity(const Name: string);

implementation

uses Classes;

var
  HeldHandles: TStringList;

function GetExclusivity(const Name: string): boolean;

var
  res: HResult;

begin
  res := CreateMutex(nil,true,pchar(Name));
  if (res = 0) or (GetLastError = ERROR_ALREADY_EXISTS) then
    begin
      result := false;
      exit;
    end
  else
    begin
      HeldHandles.AddObject(Name,TObject(res));
      result := true;
    end;
end;

procedure ReleaseExclusivity(const Name: string);

var
  idx: integer;

begin
  idx := HeldHandles.IndexOf(Name);
  if idx = -1 then
    raise exception.create('We do not hold this handle');
  CloseHandle(integer(HeldHandles.Objects[idx]));
  HeldHandles.Delete(idx);
end;

initialization
  HeldHandles := TStringList.Create;
finalization
  HeldHandles.Free;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -