防止程式重複執行的單元

2021-04-19 20:36:07 字數 2485 閱讀 6759

防止程式重複執行的單元

//工程引用此單元就能防止同時出現多個例項

unitmultinst;

inte***ce

uses

windows ,messages, sysutils, classes, forms;

implementation

const

str_unique = '

';;

mi_gethandle = 2

;var

imessageid : integer;

oldwproc : tfnwndproc;

muthandle : thandle;

bsmrecipients : dword;

functionnewwndproc(handle: hwnd; msg: integer; wparam, lparam: longint):

longint;stdcall;

begin

result := 0

;ifmsg = imessageidthen

begin

casewparamof

iflparam<>0

then

begin

ifisiconic(lparam)then

openicon(lparam)

else

setforegroundwindow(lparam);

terminate;

end;

mi_gethandle:

begin

handle);

end;

end;

end

else

result := callwindowproc(oldwproc, handle, msg, wparam, lparam);

end;

procedureinitinstance;

begin

handle, gwl_wndproc,

longint(@newwndproc)));

muthandle := openmutex(mutex_all_access, false, str_unique);

ifmuthandle = 0

then

begin

muthandle := createmutex(nil, false, str_unique);

end

else

begin

showmainform := false;

broadcastsystemmessage(bsf_ignorecurrenttaskorbsf_postmessage,

handle);

end;

end;

initialization

imessageid := registerwindowmessage(str_unique);

initinstance;

finalization

ifoldwproc <>nil

then

handle, gwl_wndproc, longint(oldwproc));

ifmuthandle <> 0

thenclosehandle(muthandle);

end.

防止程式被重複執行

防止程式被重複執行 第一法 windows95的程式一般都可以重複執行,例如你按下win e組合鍵即啟動資 源管理器,如果再按win e組合鍵又會出現乙個資源管理器,這兩個程式互不幹 擾。有時候你可以需要製作這樣乙個程式 當該程式已經執行時,若使用者企圖 再次執行該程式則只會啟用那個已執行的程式,而...

ABAP 防止程式重複執行

有的程式需要現在同一時間只能執行乙個,這種需求可以用鎖的方式來實現,在start of selection 事件後加鎖,如果是加鎖成功,說明還沒有程式在執行,如果是加鎖失敗,則說明已經有同名程式在執行,報錯即可。注 這個鎖是借用程式修改的鎖,在se38修改程式的時候也會加這個鎖。程式如下 start...

winform程式防止重複執行

用互斥法實現防止程式重複執行,使用核心物件mutex可以防止同乙個程序執行兩次。注意 是名稱相同的程序,而不是exe,因為exe程式可以改名。在program.cs中修改 首先新增using system.threading 引用 然後原內容改為下面所示 static class program 互...