一個程序只允許打開一次,平時見到類似的軟件比較多了,比如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
.
兩種方法介紹完了,任意一種方法都很好用,復制代碼到你的軟件項目中試下吧。