如何只允许一个程序实例运行?
来源:百度知道 编辑:UC知道 时间:2024/05/05 02:29:09
请教大虾们,在delphi编程中,如何只让一个程序实例运行?
PS:比如我有一个叫"a.exe"的程序正在运行,没有关闭就另外双击这个程序第二次允许,这时能够弹出一个提示框:系统已经有一个程序实例正在运行中!求大虾们帮帮忙,偶给大大的加分!
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