Delphi - 互斥對象下實現系統的單例模式

  • 2019 年 10 月 3 日
  • 筆記

使用CreateMutex函數創建互斥對象

利用Windows系統函數CreateMutex(),找出當前系統是否已經存在指定進程的實例,如果沒有則創建一個互斥體。

CreateMutex函數原型如下:

function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PChar): THandle; 

其中參數:

lpMutexAttributes :SECURITY_ATTRIBUTES 結構類型指針,可以為NULL。

bInitialOwner :是否初始化互斥體。

lpName :互斥體對象的名稱,一般是工程的名稱。

最終,函數返回一個互斥體句柄。

 

Delphi WinFrm利用互斥對象實現單例模式

單擊Project,View Source;

uses 中添加Windows;

Begin和End之間添加如下程式碼。

 

 

  //*****************************單例模式********************************    CreateMutex(nil, False, 'Application Name');    if GetLastError = ERROR_ALREADY_EXISTS then    begin      Application.MessageBox('系統已經開啟了,請確認下!', '提示', MB_OK);      Halt(0);    end;      //*****************************單例模式********************************

 

Tags: