Показать сообщение отдельно

  #167  
Старый 28.06.2007, 15:09
NetMan
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
С нами: 11710201

Репутация: 134
Post

Объявляем тип:
Код:
TPIDs = array of DWORD;
Код:
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..
 
Ответить с цитированием