其他分享
首页 > 其他分享> > MFC中2种方式用互斥体函数避免多开

MFC中2种方式用互斥体函数避免多开

作者:互联网

第一种方式(查找程序名)

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() 函数里面调用

标签:GetLastError,MFC,多开,程序,hMutex,互斥,exe,test,NULL
来源: https://www.cnblogs.com/ring5/p/15333269.html