C++程序實例唯一方案,窗口只打開一次,程序只打開一次


首先是方法:

// IsAlreadyRunning - 是否已經運行
BOOL IsAlreadyRunning()
{
    BOOL bRet = FALSE;
    HANDLE hMutex = ::CreateMutex(NULL, TRUE, _szAppName);

    if (GetLastError() == ERROR_ALREADY_EXISTS)
    {
        bRet = TRUE;
        HWND hWnd = FindWindow(_szAppName, _szTitle);
        SetForegroundWindow(hWnd);
    }
    if (hMutex)
    {
        ::ReleaseMutex(hMutex);
    }
    return bRet;
}

然后在程序開始處調用:

// WinMain - 程序進入點
int CALLBACK WinMain(HINSTANCE hInstance,    //應用程序實例句柄
                    HINSTANCE hPrevInstance,    //16位系統中,該值指向當前程序的前一個實例,Win32 系統中,hPrevInstance總是為NULL
                    LPSTR lpCmdLine,    //指向應用程序命令行的字符串的指針,不包括執行文件名
                    int nCmdShow)    //指明窗口如何顯示
{
    if (IsAlreadyRunning()) return 0;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM