9X procedure GetProcess; var FProcList:TStringList; PE: TProcessEntry32; PPE: PProcessEntry32; begin FProcList:TStringList.Create; if FSnap > 0 then CloseHandle(FSnap); FSnap := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); if FSnap = INVALID_HANDLE_VALUE then raise Exception.Create('CreateToolHelp32Snapshot failed'); PE.dwSize := SizeOf(PE); if Process32First(FSnap, PE) then // get process repeat New(PPE); // create new PPE PPE^ := PE; // fill it FProcList.Add(PPE); // add it to list until not Process32Next(FSnap, PE); // get next process end; 2000/NT procedure TForm1.FillList; var FProcList:TStringList; i:integer; Prochand:THandle; Modhand:HModule; ModName:array[0..MAX_PATH] of Char; Counts:DWORD; begin FProcList:=TStringList.Create; Modhand:=0; For i:=low(proarray) to high(proarray) do begin Prochand:=OpenProcess(PROCESS_QUERY_INFORMATION OR PROCESS_VM_READ,False,proarray[i]); if Prochand>0 then begin try EnumProcessModules(Prochand,@ModHand,1,Counts); if GetModuleFileNameEx(Prochand,Modhand,ModName,Sizeof(ModName))>0 then FProcList.Add(ModName); finally CloseHandle(Prochand); end; end; end;
procedure GetProcess;
var
FProcList:TStringList;
PE: TProcessEntry32;
PPE: PProcessEntry32;
begin
FProcList:TStringList.Create;
if FSnap > 0 then CloseHandle(FSnap);
FSnap := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if FSnap = INVALID_HANDLE_VALUE then
raise Exception.Create('CreateToolHelp32Snapshot failed');
PE.dwSize := SizeOf(PE);
if Process32First(FSnap, PE) then // get process
repeat
New(PPE); // create new PPE
PPE^ := PE; // fill it
FProcList.Add(PPE); // add it to list
until not Process32Next(FSnap, PE); // get next process
end;
2000/NT
procedure TForm1.FillList;
var
FProcList:TStringList;
i:integer;
Prochand:THandle;
Modhand:HModule;
ModName:array[0..MAX_PATH] of Char;
Counts:DWORD;
begin
FProcList:=TStringList.Create;
Modhand:=0;
For i:=low(proarray) to high(proarray) do
begin
Prochand:=OpenProcess(PROCESS_QUERY_INFORMATION OR PROCESS_VM_READ,False,proarray[i]);
if Prochand>0 then begin
try
EnumProcessModules(Prochand,@ModHand,1,Counts);
if GetModuleFileNameEx(Prochand,Modhand,ModName,Sizeof(ModName))>0 then
FProcList.Add(ModName);
finally
CloseHandle(Prochand);
end;
end;
end;