delphi 互斥量,只允许运行一个实例

发布时间 2023-05-05 21:12:42作者: 一曲轻扬

效果图:

 代码超简单的:

//在窗体类中定义一个私有字段
 private
    Fmutex: THandle;


procedure TFrmLogin.FormCreate(Sender: TObject);
begin//创建一个命名的互斥量,确保同一时间只有一个实例在运行
  //第三个参数是自定义的,随便取的,但一定要是唯一的标识
  FMutex := CreateMutex(nil,True,'MyDelphiAppMutex');
  if (FMutex <> 0) and (GetLastError = ERROR_ALREADY_EXISTS) then
  begin
  //另一个实例已经在运行,关闭当前实例
    dm.ShowMessageFadeOut('只能运行一个实例');//这是个自定义的消息提示,可替换
    ExitProcess(0);//这里不会触发任何关闭或者销毁事件
  end;
end;