C 讓windows程式只執行一次

2021-09-06 05:38:46 字數 968 閱讀 7547

方法一:使用mutex來進行

1.首先要新增如下的namespace:       using system.threading;

2.修改系統main函式,大致如下:

bool bcreatednew;

//create a new mutex using specific mutex name

mutex m =new mutex( false, "myuniquename", out bcreatednew );

if( bcreatednew )

如上面編碼就可以了,要注意的一點是,在給mutex起名字的時候,不要太簡單,以防止和其他程式的mutex重複,從而達不到所預想的效果。

方法二:使用process來進行

1.首先要新增如下的namespace:using system.diagnostics;using system.reflection;2.新增如下函式:

publicstatic process runninginstance()

} }

//no other instance was found, return null.

returnnull; }

3.修改系統main函式,大致如下:

if( runninginstance() == null )

如上面編碼就可以了,要注意的一點是,在判斷程序模組檔名是否相等這部分的**,是可選的。如果當前的程式在檔案系統中只存在乙個的話,以上的方法是可以的;否則不要刪除這部分的**。

對比兩種方法,就效率和簡便性來說,前一種方法是最好的,也是我比較喜歡的;後一種方法,速度比較慢,其次通過processname去系統中查尋,有可能查出來的process並不是我想要得,雖說在後面加了檔案目錄判斷,但是其含有潛在的問題(前面已經說出來)。不過,第一種方法也有缺陷,就是擴充套件性操作不方便,例如:讓程式只執行一次,如果程式已經執行,把它彈出並顯示到最前面。對於此,後一種方法就很有優勢了。

Windows讓程式只執行一次

一 通過建立互斥量來判斷 winapi winmain hinstance,hinstance,lpstr,int if getlasterror error already exists catch exception exception return 0 二 用系統原子 winapi winma...

讓程式只執行乙個例項(C )

通常我們會遇到這樣的情況,讓程式只執行乙個例項,比如啟動防毒軟體時,只能啟動乙個,再啟動的話就沒什麼效果!利用程式名來判斷不是乙個好辦法,如果我們把程式名稱改一下就可以執行兩個完全一樣的程序。我們最好利用程式集的attribute存放特定資訊,然後用assembly物件的getcustomattri...

C 讓應用程式只執行乙個例項

用如下方法可以保證應用程式只執行乙個例項。新增引用 using system.reflection using system.runtime.interopservices using system.diagnostics 呼叫dll檔案 dllimport user32.dll private s...