MFC程式唯一執行判斷(只能執行一個例項)
阿新 • • 發佈:2019-01-01
方法一:
BOOL CIrisApp::InitInstance()
{
//加入程式唯一執行
::CreateMutex(NULL,TRUE,m_pszExeName);
if(GetLastError()==ERROR_ALREADY_EXISTS)
{
AfxMessageBox(_T("該程式已經執行"));
exit(0);
}
}
方法二:
InitInstance()中加入
m_hMutex = ::CreateMutex(NULL, TRUE,
"互斥名(隨便取)"
);
if
(GetLastError() == ERROR_ALREADY_EXISTS)
//程式已經執行
{
HWND
oldHWnd = NULL;
oldHWnd = ::FindWindow(NULL, _T(
"程式名"
));
//查詢已經執行的程式
if
(oldHWnd)
{
::ShowWindow(oldHWnd, SW_SHOWNORMAL);
//啟用顯示找到的已執行的程式
::SetForegroundWindow(oldHWnd);
//將已執行的程式設定為當前視窗
}
CloseHandle(m_hMutex);
m_hMutex = NULL;
return
FALSE;
}