現在実行されているプログラムのフルパスを取得する関数です。この関数内で使われている関数は 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;
|