第一种方式(查找程序名)
HANDLE m_hMutex = CreateMutex(NULL,TRUE, "程序名");
if(GetLastError()==ERROR_ALREADY_EXISTS)
{
AfxMessageBox("此程序已经运行");
return FALSE;
}
第二种方式(查找进程名)
const char *MutexObject = "test.exe"; //test.exe为进程名
hMutex = NULL;
hMutex = ::CreateMutex(NULL,false,MutexObject);
if(hMutex != NULL){
DWORD err = GetLastError();
if(err == ERROR_ALREADY_EXISTS)
AfxMessageBox("此程序已经运行");
::PostQuitMessage(0);//退出进程
}
这两种方式都必须要在程序未运行之前进行判断
在CXXXApp::InitInstance() 函数里面调用