MFC程序唯一运行判断(只能运行一个实例)

来源:互联网 发布:mumu模拟器网络异常 编辑:程序博客网 时间:2024/05/14 12:33

方法一:

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;
}