稼動中のプログラムのフルパスをリストアップ

現在実行されているプログラムのフルパスを取得する関数です。この関数内で使われている関数は TLHelp32ユニットで定義されています。英語版のWin32Helpに関数の解説があるので、それぞれの関数の役割はそちらを見てください。

LHelp32には他にもいろいろと面白い関数があるので、いろいろと試してみるといいでしょう。

procedure GetProcExeNameList(Dest: TStrings);
var
  hSnapshot: THandle;
  Entry: TProcessEntry32;
begin
  hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if hSnapshot <> $FFFFFFFF then
  begin
    try
      if Process32First(hSnapshot, Entry) then
      begin
        Dest.Clear;
        Dest.Add(Entry.szExeFile);
        while Process32Next(hSnapshot, Entry) do
          Dest.Add(Entry.szExeFile);
      end else
        raise Exception.Create(SysErrorMessage(GetLastError));
    finally
      CloseHandle(hSnapshot);
    end;
  end else
    raise Exception.Create(SysErrorMessage(GetLastError));
end;

Copyright 2001 Rinka Kouzuki All Rights Reserved.