function GetProcessIDs(ProcessName:PChar):TPIDs;
var
ResultLen,hSnapshot:DWORD;
PE:TPROCESSENTRY32;
begin
Result:=nil;
hSnapshot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if hSnapshot=INVALID_HANDLE_VALUE then exit;
PE.dwSize:=SizeOf(TPROCESSENTRY32);
if not Process32First(hSnapshot,PE) then exit;
ResultLen:=0;
repeat
if lstrcmpi(PE.szExeFile,ProcessName)=0 then
begin
inc(ResultLen);
SetLength(Result,ResultLen);
Result[ResultLen-1]:=PE.th32ProcessID;
end;
until not Process32Next(hSnapshot,PE);
CloseHandle(hSnapshot);
end;
Юзать:
Код:
...........
var i:integer;
PIDs:TPIDs;
begin
PIDs:=GetProcessIDs('svchost.exe');
if PIDs=nil then exit;
lb.Items.Clear;
for i:=0 to Length(PIDs)-1 do
lb.Items.Add(IntToStr(PIDs[i]));
end;
....................
Последний раз редактировалось NetMan; 28.06.2007 в 15:50..