当有一个MFC的实例进程在运行,如果再去运行这个进程,windows就会再起一个相同的进程,如下图:
这种情况当然不能出现,现在有一个办法可以解决,在App的InitInstance()中开头处添加如下代码即可:
例如,我的MutilThread进程,则需要在BOOL CMutilThreadApp::InitInstance()中开头加:
BOOL CMutilThreadApp::InitInstance()
{
HANDLE Mutex;
Mutex = CreateMutex(NULL, TRUE, _T("only"));
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
AfxMessageBox(_T("There have one process Running !!"));
return 0;
}
else
{
ReleaseMutex(Mutex);
}
.......
}
如此当有MutilThread进程在运行时,再去启动时,就会弹出一个对话框提示“There have one process Running !!”
注意:本工程因为是支持Unicode编码,所以,加有_T;