如何只允许一个程序实例运行?

来源:百度知道 编辑:UC知道 时间:2024/05/05 02:29:09
请教大虾们,在delphi编程中,如何只让一个程序实例运行?

PS:比如我有一个叫"a.exe"的程序正在运行,没有关闭就另外双击这个程序第二次允许,这时能够弹出一个提示框:系统已经有一个程序实例正在运行中!求大虾们帮帮忙,偶给大大的加分!

在Delphi中建立一个应用程序,然后单击菜单“Project”,单击“View Source”,这样就在代码编辑器中打开了工程文件,它的代码看起来像这样:

program OnlyOne;

uses
Forms,
uOnlyOneWindow in 'uOnlyOneWindow.pas' {OnlyOneWindow };

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TOnlyOneWindow, OnlyOneWindow);
Application.Run;
end.

我将其代码更改如下:

program OnlyOne;

uses
Windows,
Forms,
uOnlyOneWindow in 'uOnlyOneWindow.pas' {OnlyOneWindow};

{$R *.res}

var
hAppMutex: THandle;

begin
Application.Initialize;
//创建互斥对象
hAppMutex := CreateMutex(nil, false, PChar('OnlyOne'));
if (hAppMutex = 0) then
begin
MessageBox(0,PChar('创建互斥对象失败!'),PChar('Error'),MB_OK + MB_ICONINFORMATION);
exit;
end;
//查看是否是第一次运行程序
if ((hAppMutex <> 0) and (GetLastError() = ERROR_ALREADY_EXISTS)) then
begin