这个看很多程序都做了这个判断。看看网上是怎么做的。
代码片断功能简介: 介绍几种VC避免应用程序运行多次的方法。
方法一
在InitInstance函数里面使用:
以下是代码片段:
CString mutexName="oneInstanceMutexNew";
HANDLE myMutex=OpenMutex(MUTEX_ALL_ACCESS,FALSE,mutexName);
if(myMutex==NULL) //创建互斥信号量
myMutex=CreateMutex(NULL,TRUE,mutexName);
else
{
AfxMessageBox("系统检测到您已经运行了该程序。\r\n请退出另外一个程序再运行该程序!");
return false;
}
最后在ExitInstance函数里面释放:
以下是代码片段:
if(myMutex!=NULL) //释放互斥信号量
ReleaseMutex(myMutex);
方法二
在InitInstance函数里面使用:
以下是代码片段:
HANDLE hMutex=CreateMutex(NULL,false,"XXXXXX");
if(hMutex==NULL || GetLastError() == ERROR_ALREADY_EXISTS)
{
CloseHandle(hMutex);
AfxMessageBox("系统检测到您已经运行了该个程序。\r\n请退出另外一个程序再运行该程序!");
return false;
}
方法三
在InitInstance函数里面使用:
以下是代码片段:
CString strTitle = "短信平台";
HWND hWnd = ::FindWindow(NULL, (LPCSTR)strTitle);
if (hWnd) {
AfxMessageBox("系统检测到您已经运行了该个程序。\r\n请退出另外一个程序再运行该程序!");
return false;
}
这方法还真是不错。顶!互斥就搞定!
|