多重起動防止に度々 Mutex も面倒なので Unit を作成 initialization と finalization を利用して簡素化してみた パスを含まない実行ファイル名をキーに Mutex を作成している ※パスを含んだ実行ファイル名をキーにする場合は ¥ を別の文字列に変更する必要あり initialization でアプリケーションを正しく終了させる方法があったら、誰か教えて下さい unit RunOnceUnit; interface uses Winapi.Windows, System.SysUtils; var MutexAlreadyExists: Boolean = False; implementation var MutexHandle: THandle; initialization MutexHandle := CreateMutex(nil, False, PChar(ExtractFileName(ParamStr(0)))); MutexAlreadyExists := (MutexHandle <> 0) and (GetLastError() = ERROR_ALREADY_EXISTS); finalization if (MutexHandle <> 0) then begin ReleaseMutex(MutexHandle); end; end. 使い方(アプリケーションのメインユニットで) program HOGEHOGE; uses Vcl.Forms, RunOnceUnit, // ユニット追加 Unit1 in 'Unit1.pas' {Form1}, {$R *.res} begin // ↓既に実行されていれば終了↓ if MutexAlreadyExists then begin Exit; end; // ↑既に実行されていれば終了↑ Application.Initialize; Application.MainFormOnTaskbar := True; Application.Cr...