Reinicie o aplicativo Delphi programaticamente
Não deve ser possível executar várias instâncias do meu aplicativo. Portanto, a fonte do projeto contém:
CreateMutex (nil, False, PChar (ID));
if (GetLastError = ERROR_ALREADY_EXISTS) then
Halt;
Agora eu quero reiniciar meu aplicativo programaticamente. A maneira usual seria:
AppName := PChar(Application.ExeName) ;
ShellExecute(Handle,'open', AppName, nil, nil, SW_SHOWNORMAL) ;
Application.Terminate;
Mas isso não vai funcionar no meu caso por causa do mutex. Mesmo que eu libere o mutex antes de iniciar o segundo instace, ele não funcionará porque o desligamento leva algum tempo e duas instâncias não podem ser executadas em paralelo (devido a recursos comuns e outros efeitos).
Existe uma maneira de reiniciar um aplicativo com essas características? (Se possível sem um executável adicional)
Desde já, obrigado.