Delphi Tips 
-----------------------------

0269  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/09/19 K.Takaoka rev 1.1
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/09/19 K.Takaoka 編集
二重起動の判定

該当記事で以下のようなユニットが紹介されています

unit Unique;

interface

uses
  Windows, Sysutils;

implementation

var
  UniqueName : string;
  hMutex: THandle;

initialization
  UniqueName := ExtractFileName(ParamStr(0));
  hMutex := OpenMutex(MUTEX_ALL_ACCESS, false, pchar(UniqueName));
  if hMutex <> 0 then
  begin
    CloseHandle(hMutex);
    Halt;
  end;
  hMutex := CreateMutex(nil, false, pchar(UniqueName));

finalization
  ReleaseMutex(hMutex);
end.

Mutex は同じ名前のものは 2 つ存在することはできません.
ここでは ExtractFileName(ParamStr(0)) を mutex の名前にしています.
複数のアプリケーションで(意図的な場合は除いて)同じ名前の mutex を作成しようとすると問題になる可能性が高いため、できるだけユニークな名前を割り当てるようにしなければなりません.

また、このユニットではすでに mutex が存在していた場合に Halt 手続きを実行しています.
該当部分を書きかえることによって二重起動時に任意のアクションを起こすことができるでしょう.
参照: [Delphi-ML:6240] <その他Windows関連> <Windows>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp