Ivann писал(а):
а с TProcessEntry32? На самом MSDN example с её использованием этих функцийЕсли только ты найдешь, как к ней прицепить GetModuleFilenameEx
Короче, надо нормально сделать вот этот модуль
procedure ThiEnumProcess.EnumNT;
var PIDArray: array [0..1023] of DWORD;
cb: DWORD;
I: Integer;
ProcCount: Integer;
hMod: HMODULE;
hProcess: THandle;
begin
Init;
EnumProcesses(@PIDArray, SizeOf(PIDArray), cb);
ProcCount := cb div SizeOf(DWORD);
for I := 0 to ProcCount - 1 do begin
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, PIDArray[I]);
if (hProcess <> 0) then begin
EnumProcessModules(hProcess, @hMod, SizeOf(hMod), cb);
GetModuleFilenameEx(hProcess, hMod, procEntry.szExeFile, SizeOf(procEntry.szExeFile));
procEntry.th32ProcessID := PIDArray[I];
if not CallBack() then Break;
CloseHandle(hProcess);
end;
end;
_hi_OnEvent(_event_onEndEnum);
end;