程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++程序實例唯一方案,窗口只打開一次,程序只打開一次,實例窗口

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

編輯:C++入門知識

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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved