限制開啟乙個程式例項

2021-04-13 09:15:43 字數 931 閱讀 2290

----限制開啟乙個程式,只執行乙個程式例項-----

實現的方法有很多,但簡單而常用的方法有下面幾種:

方法1:

handle handle = createmutex( null, false , _t("only_one_instance"));

if(handle == null)

else

方法2:

if(::globalfindatom( "unique_instance" )==0 )

else

記住當前程式退出時要呼叫globaldeleteatom 刪除代表本例項的 atom 。如果忘記刪除,那以後該例項程式就不能再執行了。可見該 atom 值不是和特定應用程式相聯絡的,當應用程式在沒有刪除atom值就退出後,該值並沒有被作業系統刪除。

這樣就會遇到下面情景:假設你的程式因為某種原因非正常退出(atom 值沒有刪除),那麼使用者想再次執行你的程式時就會失敗。因為新執行的程式總能找到 atom。

這種方法不好,最好別使用。

方法3:

可以通過檔案對映的方法來做

建立乙個有名字的對映區域, 再此僅給出思路

方法4:

可以通過在檔案中設定共享節來做,在共享節中設定變數,通過變數來判斷是否已有例項執行。

共享節應該放在 dll 中,當然變數也在裡面。

dll 被我們的程式載入,然後我們改變的他的值為乙個特殊的值。

每次我們的例項程式執行時都預先判斷這個變數是否是我們設定的特殊值.

如果是,那就說明已有程式在執行。不是的話就設定它為特殊值,我們的程式執行

乙個MFC Console程式例項

例子用來計算小於100的所有斐波那契數列 fabonacci sequence 斐波那契數列的計算方法 1 頭兩個數是1。2 接下來的每乙個數是前兩個數的和。mfc程式的的重點 1 程式的進入點仍為main 2 需要載入所使用類的標頭檔案 本例為afx.h 3 可直接使用與gui無關的mfc類 本例...

程式只執行乙個例項,並啟用前乙個例項

實現程式只執行一次的方法很多,但是原理都是一樣的,就是執行第一次的時候設定乙個標記,每次執行的時候檢查該標記,如果有就說明已經執行了。具體實現 1 在程式初始化的時候 initinstance 列舉所有的視窗,查詢本程式的例項是否存在 2 在主視窗初始化的時候在本視窗的屬性列表中新增乙個標記,以便程...

乙個應用程式例項

在開發一些應用系統的時候,由於程式內在的一些特徵,系統的某些組成子程式只允許執行乙個應用程式例項,以保證業務和資料處理安全。本文將從實際應用角度來分析其實現原理,對三種實現方式進行測試比較,從而確定一種合適的實現方法。文章的例子使用c 語言進行描述。程序匹配 對於每乙個應用程式執行例項都會包含該例項...