Delphi實現防止程式多次執行

2021-08-01 05:59:07 字數 1103 閱讀 7326

windows是個多使用者多工的作業系統,支援多個程式同時執行,如果你的程式不想讓使用者同時執行乙個以上,

那應該怎樣做呢? 本文將介紹避免使用者同時執行多個程式的例子。

需要用到的函式createmutex ,createmutex 函式是windows中乙個並不常用的函式,

該函式物件在系統中只能存在乙個例項且是互斥體,所以利用這種特性就很簡單的實現了我們的要求。

【函式原宣告】:

function createmutex(lpmutexattributes: psecurityattributes; binitialowner: bool; lpname: pchar): thandle;

function createmutex(lpmutexattributes: psecurityattributes; binitialowner: bool; lpname: pchar): thandle;

【引數說明】:

lpmutexattributes 是乙個security_attributes 結構型別的指標,可以設定為null。

binitialowner 是否初始化互斥體。

lpname 互斥體物件的名稱。

函式返回乙個互斥體控制代碼。

當程式執行時建立物件,如果物件已經存在就表明程式已經被執行了。。

【實現過程如下】:

新建乙個工程,窗體明明為form1.

新增乙個button按鈕命名為button1.

雙擊按鈕新增**

procedure tform1.button1click(sender: tobject);

var

hw : hwnd;

gt : integer;

begin

hw := createmutex(nil,false,'runmyfile');

gt := getlasterror;

if gt <> error_already_exists then

begin

end

else

begin

releasemutex(hw);

end;

end;

Delphi 防止程式多次執行

program project1 uses forms,windows,unit1 in unit1.pas var hmutex hwnd ret integer begin hmutex createmutex nil,false,test ret getlasterror if ret err...

防止程式多次開啟

static class program 獲取正在執行的例項,沒有執行的例項返回null public static process runninginstance return null 顯示已執行的程式。public static void handlerunninginstance proce...

C 防止程式多次執行

經過我的測試,還比較好用,但是有個問題,如果不登出,用另乙個使用者進入,則程式不能判斷出已執行。所以只限於用在單使用者環境,還是不太完美。class program console.writeline 正在執行中 console.readline public static class oneins...