Не должно быть возможности запускать несколько экземпляров моего приложения. Таким образом, исходный код проекта содержит:
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;
Но в моем случае это не сработает из-за мьютекса. Даже если я отпущу мьютекс перед запуском второго экземпляра, он не сработает, потому что отключение занимает некоторое время, и два экземпляра не могут работать параллельно (из-за общих ресурсов и других эффектов).
Есть ли способ перезапустить приложение с такими характеристиками? (По возможности без дополнительного исполняемого файла)
Заранее спасибо.