C 實現程式只啟動一次 總結

2021-09-06 19:56:21 字數 1412 閱讀 3520

我前面的三篇文章是從網上找到的(如下鏈結),都說是實現程式只啟動一次的功能。

c#防止程式多次執行

c#檢測程式重複執行的函式(可以在多使用者登入情況下檢測)

c# 實現程式只啟動一次(多次執行啟用第乙個例項,使其獲得焦點,並在最前端顯示)

c# 實現程式只啟動一次(實現程式自重啟)

一:使用system.threading.mutex類

使用這個方法,我自己測試下來,在windows的單一使用者使用的時候可以使用,當多個windows使用者同時使用的時候則無法檢測到程式是否在執行狀態。

二:檢查程序名的

process processes = process.getprocessesbyname(process.getcurrentprocess().processname);
使用這個方法可以檢查當前機器上的所有程序名稱,多個使用者也可以同時檢測。但是如果程式改名執行,則無法檢測到程式是否在執行狀態。

三:使用api

api一:

[dllimport("user32.dll")]

private static extern bool showwindowasync(intptr hwnd, int cmdshow);

[dllimport("user32.dll")]

private static extern bool setforegroundwindow(intptr hwnd);

api二:

[dllimport("kernel32.dll", charset = charset.auto)]

private static extern intptr openmutex(

uint dwdesiredaccess, // access

int binherithandle, // inheritance option

string lpname // object name

);[dllimport("kernel32.dll", charset = charset.auto)]

private static extern intptr createmutex(

intptr lpmutexattributes, // sd

int binitialowner, // initial owner

string lpname // object name

);

這個方法在我前面的文章中已經提到了兩種api的使用

api一,可以使程式前端顯示出來,並且獲取為焦點。

api二,其實更像system.threading.mutex類,

因為在專案中暫時沒有使用這些功能,所以沒有太多的意見。

讓程式只啟動一次

讓程式只啟動一次 有時在開發程式的時候,有時需要只能同時執行乙個例項.mutex 類,稱為互拆體,是乙個同步基元,它只向乙個執行緒授予對共享資源的獨佔訪問權。當兩個或更多執行緒需要同時訪問乙個共享資源時,系統需要使用同步機制來確保一次只有乙個執行緒使用該資源。如果乙個執行緒獲取了互斥體,則要獲取該互...

C 讓windows程式只執行一次

方法一 使用mutex來進行 1 首先要新增如下的namespace using system.threading 2 修改系統main函式,大致如下 bool bcreatednew create a new mutex using specific mutex name mutex m new ...

利用勸告鎖實現程式只執行一次

1.由於需要,乙個業務程式一天之中可能要被多次使用,但同一時間只能有乙個人使用,於是我們得想個辦法保證互斥。程序間通訊有很多種方式,訊號量就不錯。但學習使用下檔案鎖,更簡潔一點。2.檔案系統級別的鎖有四種,最基本的兩種是勸告鎖和強制鎖,剩下的兩種是強制鎖的變種。應用級別上對鎖的操作有兩種,加讀鎖,或...