看到有资料上是如下方法:procedure TForm1.FormCreate(Sender: TObject);
begin
{搜索数据库看程序是否运行}
if GlobalFindAtom('PROGRAM_RUNNING') = 0 then
{ 假如没有找到,就添加到数据库}
atom := GlobalAddAtom('PROGRAM_RUNNING')
else begin
{ 如果程序已经运行,显示信息并退出程序 }
MessageDlg('程序已经运行!', mtWarning, [mbOK], 0);
Halt;
end;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
{ 退出程序时,从数据表中删除添加的条目 }
GlobalDeleteAtom(atom);
end;但我搬过来用时,编译出错,说atom后面需要'(',找帮助也没有对atom的说明。
哪位大虾帮帮忙!
begin
{搜索数据库看程序是否运行}
if GlobalFindAtom('PROGRAM_RUNNING') = 0 then
{ 假如没有找到,就添加到数据库}
atom := GlobalAddAtom('PROGRAM_RUNNING')
else begin
{ 如果程序已经运行,显示信息并退出程序 }
MessageDlg('程序已经运行!', mtWarning, [mbOK], 0);
Halt;
end;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
{ 退出程序时,从数据表中删除添加的条目 }
GlobalDeleteAtom(atom);
end;但我搬过来用时,编译出错,说atom后面需要'(',找帮助也没有对atom的说明。
哪位大虾帮帮忙!
{$R *.RES}
var
hmutex:hwnd;
ret:integer;
begin
Application.Initialize;
hmutex:=createmutex(nil,false,dpr文件名);
ret:=getlasterror;
if ret<>error_already_exists then
begin
Application.CreateForm(TfrmReceive, frmReceive);
Application.Run;
end
else
begin
Application.MessageBox('该程序已经有一个在运行中!','系统提示',MB_ICONINFORMATION+MB_OK);
releasemutex(hmutex);
end;
end.当然不要忘了在前面的uses中加上:
Forms,
windowsgood luck,hoho...
atom: integer;的私有变量
var handle:integer;
begin
handle:=findwindow(mypro,nil);
if handle<>0 then
begin
messagebox(0,'程序正在运行,请退出!','警告!',0);
// halt;
end;