我的应用程序不应该能够运行多个实例。因此,项目源代码包含:
CreateMutex (nil, False, PChar (ID));
if (GetLastError = ERROR_ALREADY_EXISTS) then
Halt;
现在我想通过编程的方式重新启动我的应用程序。通常的方法是:
AppName := PChar(Application.ExeName) ;
ShellExecute(Handle,'open', AppName, nil, nil, SW_SHOWNORMAL) ;
Application.Terminate;
但是在我的情况下这不起作用,因为有互斥锁。即使我在启动第二个实例之前释放互斥锁,也不会起作用,因为关闭需要一些时间,两个实例不能并行运行(因为共享资源和其他影响)。
有没有一种方法可以重新启动具有这种特性的应用程序?(如果可能,不需要额外的可执行文件)
提前感谢。