VC程式只執行一次例項

2021-09-30 08:17:59 字數 962 閱讀 8122

方法一: /*

建立全域性互斥體,然後在程序啟動時檢查該互斥體是否已被建立

只需要在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...