アプリケーションの複数のインスタンスを実行できないようにする必要があります。したがって、プロジェクトソースには次のものが含まれます。
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;
しかし、私の場合、ミューテックスのためにこれは機能しません。2番目のインスタンスを開始する前にミューテックスを解放しても、シャットダウンに時間がかかり、2つのインスタンスを並行して実行できないため(共通のリソースやその他の影響のため)、動作しません。
そのような特性を持つアプリケーションを再起動する方法はありますか?(可能であれば、追加の実行可能ファイルなしで)
前もって感謝します。