防止程式重複執行的單元
//工程引用此單元就能防止同時出現多個例項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 互...