熟悉Delphi的朋友都知道,用Delphi编写的程序如果不加任何控制,编译出来的EXE程序可以多个同时运行。如果在程序中加入下列代码就可解决这一问题:
.......
public
aa:word;
.......
procedure TForm1.FormCreate(Sender: TObject);
begin
//搜索系统数据库看程序是否正在运行
if GlobalFindAtom('Project1') =0 then // Project1为EXE文件名
//假如没有找到该EXE文件,就把此EXE文件名添加到系统数据库
aa := GlobalAddAtom(' Project1')
else
begin //如果该程序已经运行,显示信息并退出程序
MessageDlg('该程序正在运行!', mtWarning, [mbOK], 0);
Halt;
end;
end;
.......
procedure TForm1.FormDestroy(Sender: TObject);
begin
{ 退出程序时,从数据表中删除添加的文件名 }
GlobalDeleteAtom(aa);
end;