一個程序只允許打開一次,平時見到類似的軟件比較多了,比如Windows的播放器、Photoshop等,當這些軟件打開的時候,如果需要打開他們可以打開的文件,即使你雙擊文件,也只是在已打開的軟件中運行,並不會重新打開一個進程,這樣可有效減少資源浪費。
那麼實現一個程序只允許運行一個實例,方法有很多,今天主要介紹兩種方法,網上Delphi達人的辦法,希望有用:
第一種方法,使用“過程調用”:
01
procedure Del; // 自定義過程
02
var
03
Mutex: THandle;
04
begin
05
Mutex := CreateMutex(nil, True, PChar(Application.Title));
06
if GetLastError = ERROR_ALREADY_EXISTS then
07
begin
08
Application.MessageBox('程序已經在運行...','系統提示', MB_ICONERROR);
09
ReleaseMutex(Mutex); {釋放資源}
10
Application.Terminate;
11
end;
12
end;
第二種方法:通過寫入dpr工程文件:
01
program Project1;
02
uses
03
Forms, Windows,
04
Unit1 in 'Unit1.pas' {Form1};
05
{$R *.RES}
06
var Mutex:THandle;
07
begin
08
Mutex := CreateMutex(nil,true,'one'); {第3個參數任意設置}
09
if GetLastError <> ERROR_ALREADY_EXISTS then
10
begin
11
Application.Initialize;
12
Application.CreateForm(TForm1, Form1);
13
Application.Run;
14
end
15
else
16
Application.MessageBox('該程序正在運行!','提示',MB_OK);
17
ReleaseMutex(Mutex); {釋放資源}
18
end.
兩種方法介紹完了,任意一種方法都很好用,復制代碼到你的軟件項目中試下吧。