1. 程式人生 > >MFC開發技巧——應用程式只能執行一個例項

MFC開發技巧——應用程式只能執行一個例項

在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,這樣就可以判斷該程式是否已經運行了。