CreateMutex()函數可用來創建一個有名或無名的互斥量對象,其函數原型為:
HANDLE CreateMutex
(
LPSECURITY_ATTRIBUTES lpMutexAttributes, //指向安全屬性的pointer
BOOL bInitialOwner, //初始化互斥對象的所有者
LPCTSTR lpName //指向互斥對象名字的pointer
);
如果函數執行成功,將return一個互斥量對象的handle。 如果在CreateMutex()執行前已經存在有相同名字的互斥量,函數將返回這個已經存在互斥量的handle,並且可以利用GetLastError()得到錯誤代碼ERROR_ALREADY_EXIST。可見,利用對錯誤代碼ERROR_ALREADY_EXIST的檢測可以實現CreateMutex()對程序的互斥。
下面為sample code:
HANDLE ManagerMutex = CreateMutex(NULL, FALSE, _T("OTM_Manager.exe"));
if (GetLastError( ) == ERROR_ALREADY_EXISTS)
{
MessageBox(NULL, _T("OTM_Manager is already running"), _T("Warning!"), MB_OK);
CloseHandle(ManagerMutex );
PostQuitMessage(0);
return FALSE;
}
沒有留言:
張貼留言