Перезапустить приложение Delphi программно

Не должно быть возможности запускать несколько экземпляров моего приложения. Поэтому исходный код проекта содержит:

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;

Но в моем случае это не сработает из-за мьютекса. Даже если я отпущу мьютекс перед запуском второго экземпляра, он не сработает, потому что завершение работы занимает некоторое время и два экземпляра не могут работать параллельно (из-за общих ресурсов и других эффектов).

Есть ли способ перезапустить приложение с помощью такие характеристики? (Если возможно, без дополнительного исполняемого файла)

Заранее спасибо.

6
задан jpfollenius 21 December 2010 в 10:26
поделиться