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