效果图:
代码超简单的:
//在窗体类中定义一个私有字段 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;