首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC++

利用 Mutex 確保程式僅執行單一實例

     編輯:VC++

作法核心

在 InitInstance() 中建立具名互斥體,若 GetLastError() 回傳 ERROR_ALREADY_EXISTS 即表示已有實例在執行,隨即終止新啟動的程序。

實作程式碼

// By cryfish
HANDLE hMutexOneInstance = CreateMutex(NULL, TRUE, _T("PreventSecondInstance"));
BOOL bFound = FALSE;

if (GetLastError() == ERROR_ALREADY_EXISTS)
    bFound = TRUE;

if (hMutexOneInstance)
    ReleaseMutex(hMutexOneInstance);

if (bFound)
{
    ::AfxMessageBox(_T("程式已在執行中"));
    return FALSE;
}

關鍵點說明

  • CreateMutex 參數:NULL 安全屬性、TRUE 初始擁有權、唯一名稱字串。
  • 必須緊接呼叫 GetLastError() 判斷是否為既有實例。
  • 若取得互斥體但發現已存在,需 ReleaseMutex 釋放所有權再結束程式。

此法簡單可靠,適用於所有 Win32/MFC 應用程式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved