您的位置:首页 > 编程语言 > Delphi

Delphi中避免程序重复运行的方法

2008-10-17 21:30 381 查看
1.使用全局atom
program Project1;

uses
windows,
Forms,
Dialogs,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

const
myatom='myatom';
begin
if GlobalFindAtom(myatom)=0 then
begin
GlobalAddAtom(myatom);
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
GlobalDeleteAtom(GlobalFindAtom(myatom));
end
else
showmessage('程序已运行');
end.

2.使用互斥对象

var
mymutex: THandle;
begin
mymutex:=CreateMutex(nil,True,'MyMutx');
if GetLastError<>ERROR_ALREADY_EXISTS then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end
else
showmessage('程序已经运行');
end.

3.使用FindWindow函数,通过查找窗口名称的方式,如果有同样名称的窗口,可能会有问题的,可能还是前面两种方法比较好吧,个人喜欢第一种方法。

var
myhandle: THandle;
begin
myhandle:=FindWindow(nil,'Form1');
if myhandle=0 then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end
else
showmessage('程序已经运行');
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: