防止一个程序运行多个实例

    //设置只能运行一个实例
    //"LYCHPCSMMutex" 这个名字可以随意起
    CSMStationMutex = ::CreateMutex(NULL,TRUE,"LYCHPCSMMutex");
    if(GetLastError() == ERROR_ALREADY_EXISTS)
    {
        CWnd *pPrevWnd = CWnd::GetDesktopWindow()->GetWindow(GW_CHILD);
        while(pPrevWnd) {
            if(::GetProp(pPrevWnd->GetSafeHwnd(),"LYCHPCSMMutex"))
            {
                if(pPrevWnd->IsIconic())
                    pPrevWnd->ShowWindow(SW_RESTORE);
                pPrevWnd->SetForegroundWindow();
                pPrevWnd->GetLastActivePopup()->SetForegroundWindow();
                return FALSE;
            }
            pPrevWnd = pPrevWnd->GetWindow(GW_HWNDNEXT);
        }        
        ::CloseHandle(CSMStationMutex);
        return FALSE;
    }    
    if(CSMStationMutex == NULL)
        return FALSE;    

 

posted @ 2021-02-26 11:20  zwj鹿港小镇  阅读(83)  评论(0编辑  收藏  举报