<p>以下に例を示します。以下の例は、すでにアプリケーションのほかのインスタンスが起動していた場合には、 そのインスタンスをアクティブにする処理が追加されています。<br />
(ほぼ同時に起動した場合、アクティブにできない可能性があります。)</p>
<pre class="brush: delphi;" title="多重起動防止">
program Project1;

uses
  Windows,
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{&#36;R *.RES}

var
  hMutex: THandle;
  hApp: THandle;
begin
  // ユニークな名前でMutexを作成する 
  hMutex := CreateMutex(nil, true, 'MyApp');
  // もし失敗したら、すでにほかのインスタンスが存在する
  if (hMutex &lt;&gt; 0) and (GetLastError() = ERROR_ALREADY_EXISTS) then
  begin
    Application.MessageBox('すでに起動しています。2つ同時には起動できません。',
      '多重起動禁止', MB_ICONERROR or MB_OK);
    // 探すWindowはMainFormで、引数にMainFromのクラスと、キャプションを指定
    hApp := FindWindow('TForm1', 'Form1');    // 探すWindowは、MainForm
    if (hApp &lt;&gt; 0) then SetForeGroundWindow(hApp);
  end
  else
  begin
    Application.Initialize;
    // MainFormには、ユニークなクラス名とキャプションをつけたほうがいいです
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end;
  if (hMutex &lt;&gt; 0) then ReleaseMutex(hMutex);
  if (hMutex &lt;&gt; 0) then CloseHandle(hMutex);
end.
</pre>