MFC開發技巧——應用程式只能執行一個例項
阿新 • • 發佈:2019-01-26
在MFC程式的"CXXXXAPP"類中InitInstance()方法的開始寫上以下的程式碼:
HANDLE hMutex=::CreateMutex(NULL,TRUE,"Only One Instance");
if(GetLastError()==ERROR_ALREADY_EXISTS)
{
AfxMessageBox("程式已經執行",MB_ICONWARNING);
CloseHandle(hMutex);
return false;
}
CreateMutex(NULL,TRUE,"Only One Instance")
函式可用來建立一個有名或無名的互斥量物件,其函式原型為:
HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes, // 指向安全屬性的指標
BOOL bInitialOwner, // 初始化互斥物件的所有者
LPCTSTR lpName // 指向互斥物件名的指標
);
然後通過GetLastError()函式就會返回一個變數,如果該互斥體已經存在,那麼返回的變數就是ERROR_ALREADY_EXISTS,這樣就可以判斷該程式是否已經運行了。