|
- 通过事件对象来实现:
- HANDLE hEvent=CreateEvent(NULL,FALSE,FALSE,"OneEvent");
- if(hEvent)
- {
- if(GetLastError()==ERROR_ALREADY_EXISTS)
- {
- ::AfxMessageBox(_T("已有程序在运行!"));
- return FALSE;
- }
-
- }
复制代码 或- 在App::InitInstance()中加入
- CreateMutex(NULL, true ,m_pszAppName);
- if (GetLastError() == ERROR_ALREADY_EXISTS)
- {
- AfxMessageBox(_T( "应用程序不可以重复启动" ),MB_OK | MB_APPLMODAL |MB_ICONSTOP);
- return ( false );
- }
复制代码 或- ///////////////////////////////<防止重复运行>///////////////////////////////////////////////
- CString lpszName="proj Test"; //窗口的标题
- HANDLE hMutex = NULL;
- hMutex = ::OpenMutex(MUTEX_ALL_ACCESS,TRUE,lpszName);
- if(hMutex)
- {
-
-
- CWnd *pWnd=CWnd::FindWindow(NULL,lpszName);//目标进程的窗口的captain
- if(pWnd)
- {
- if (para[1]=="exit")
- pWnd->SendMessage(WM_MYMESSAGE_stop, NULL, NULL); //给旧进程发送消息
- else{
- MessageBox(NULL, "您已经启动程序 ! ", "提示 ",MB_ICONINFORMATION);
- }
- //MessageBox(NULL,"找到窗口","提示",MB_ICONINFORMATION);
- } else{
- MessageBox(NULL, "您已经启动程序 ! ", "提示 ",MB_ICONINFORMATION);
- }
- return FALSE;
- }
- hMutex = ::CreateMutex(NULL,TRUE,lpszName);
- ///////////////////////////////</防止重复运行>///////////////////////////////////////////////
复制代码 |
|