方法一: /*
建立全域性互斥體,然後在程序啟動時檢查該互斥體是否已被建立
只需要在initinstance()中加入 */
方法二:
一 個程式可以執行多個例項(程序),那我們如何讓它僅執行乙個例項呢?很簡單,使用#pragma編譯器指令在程序的位址空間內建立乙個「共享節」就可以 達到目的,這個「共享節」裡的資料為多個執行的程序所共享,這樣我們通過設定乙個變數比如:unsigned g_ninstancecount;作為執行例項的計數,在程式入口處檢測一下g_ninstancecount是否為1,true則禁止執行,否則 g_ninstancecount++並執行乙個例項。
具體如下:
#pragma data_seg("shared")//這個共享節叫做shared
unsigned g_ninstancecount =0;//計數初始為0
#pragma data_seg() //設定完畢
#pragma comment(linker,"/:section:shared,rws
") //這句話告訴聯結器,我要將shared設為讀寫共享
好了,讓我們實際動手來做乙個小的例子看看,在vc6.0下可以,但在其它ide(如code block)中就有不能達到效果的例子:
/********************************************
基於控制台的
********************************************/
#include
using namespace std;
#pragma data_seg("shared")
unsigned g_ninstancecount = 0;
#pragma data_seg()
#pragma comment(linker,"/section:shared,rws")
int main()}
VC程式只執行一次例項
方法一 建立全域性互斥體,然後在程序啟動時檢查該互斥體是否已被建立 只需要在initinstance 中加入 方法二 乙個程式可以執行多個例項 程序 那我們如何讓它僅執行乙個例項呢?很簡單,使用 pragma編譯器指令在程序的位址空間內建立乙個 共享節 就可以 達到目的,這個 共享節 裡的資料為多個...
如何讓程式只執行一次例項
最近在做乙個系統的客戶端時,遇到乙個問題 客戶端執行在伺服器上時,如果同乙個使用者或其他使用者執行了這個客戶端,可能會導致錯誤。這就要求該程式的例項只能執行一次。using system using system.collections.generic using system.windows.fo...
如何讓程式只執行一次例項
using system using system.runtime.interopservices using system.windows.forms using system.diagnostics using system.reflection loop through the running...