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; //*****************************單例模式********************************