程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 如何使應用程序只運行一個實例

如何使應用程序只運行一個實例

編輯:關於VC++

要使應用程序只運行一個實例,一個簡單的方法是在應用程序類中使用互斥量,這可以用VC下的GUIDGEN.EXE程序產生.GUIDGEN.EXE位於VC安裝目錄CommonTools目錄下

實例

1: 新建一基於對話框的工程ex1,采用默認設置

2: 用GUIDGEN.EXE產生一個全局標志,#define one "產生的全局標志"

本例中產生的語句如下:#define one "0xbe8e2ce1, 0xdab6, 0x11d6, 0xad, 0xd0, 0x0, 0xe0, 0x4c, 0x53, 0xf6, 0xe6"

3: 在應用程序類CEx1App::InitInstance()中,用CreateMutex函數創建一個互斥量,後調用函數GetLastError()

如果結果等於ERROR_ALREADY_EXISTS說明已經有一個實例在運行了這時返回FALSE.BOOL CEx1App::InitInstance(){ handle=::CreateMutex(NULL,FALSE,one);//handle為聲明的HANDLE類型的全局變量

if(GetLastError()==ERROR_ALREADY_EXISTS)

{

AfxMessageBox("應用程序已經在運行");

return FALSE;

}

}

4:在CEx1App::ExitInstance()中,刪除這個互斥量 int CEx1App::ExitInstance(){

CloseHandle(handle);

return CWinApp::ExitInstance();

}

本文配套源碼

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