Вниз
Скачать: CL | DM;

Как получить имя и путь всех процессов?   Найти похожие ветки 

 
Seldon ©   (2004-05-25 01:30) [0]

Как получить имя и путь всех процессов? Я делаю так:


uses
 TlHelp32;

procedure TListForm.btnRefreshClick(Sender: TObject);
var
 SShot:Cardinal;
 Entry:TProcessEntry32;
 MN:String;
begin
 lbProc.Clear;

 SShot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
 Entry.dwSize:=SizeOf(TProcessEntry32);

 Process32First(SShot,Entry);
 repeat
   MN:="";
   SetString(MN,Entry.szExeFile,StrLen(Entry.szExeFile));
   MN:=AnsiLowerCase(MN);
   if (lbProc.Items.IndexOf(MN)=-1)and(MN<>"[system process]")then
     lbProc.Items.Add(MN);
 until not Process32Next(SShot,Entry);

 CloseHandle(SShot);
end;


В результате получаю список имён вида "explorer.exe", "winamp.exe" - т.е. без пути к файлу. Но это противоречит справке:


PROCESSENTRY32
szExeFile - Path and filename of the executable file for the process.


Может я чего-то не так понимаю?


 
Kerk ©   (2004-05-25 08:25) [1]

В XP там только имя файла, полный путь в 9x.
Сам с этим мучался.


 
Seldon ©   (2004-05-25 17:37) [2]

>Kerk ©   (25.05.04 08:25) [1]
Действительно, при выставлении exe"шнику режима совместимости с 98/ME этот же код возвращает полные пути.

А можно их получить без таких извращений?


 
panov ©   (2004-05-25 19:00) [3]

>Seldon ©   (25.05.04 17:37) [2]
Можно.

var
 hs: THandle;
 me: MODULEENTRY32;
begin

hs := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS+TH32CS_SNAPMODULE,0);
 try
   if hs=INVALID_HANDLE_VALUE then Exit;
   me.dwSize := SizeOf(me);
   if Module32First(hs,me) then
   begin
     repeat
       Memo1.Lines.Add(me.szExePath);
     until not Module32Next(hs,me);
   end;
 finally
   CloseHandle(hs);
 end;


 
Seldon ©   (2004-05-25 21:57) [4]

>panov ©   (25.05.04 19:00) [3]
В данном случае получаю список загруженных DLL"ок (с путями) и один EXE файл (тоже с путём) - та самая программа, которая сожержит этот код.


 
Игорь Шевченко ©   (2004-05-25 22:05) [5]

В XP - GetModuleFileNameEx, или вынимать CommandLine из PEB, как в http://www.schevchenko.net.ru/SRC/EnumFunctions_60.zip



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.021 c
6-1084278741
malamba
2004-05-11 16:32
2004.07.04
выполнить команду на удаленной машине


11-1076241489
mmn
2004-02-08 14:58
2004.07.04
Зависание при изменении TabOrder в TKOLMemo


1-1087241395
^G^
2004-06-14 23:29
2004.07.04
Help!!Пустиковый вопрос, по stringgrid.


14-1087429532
olookin
2004-06-17 03:45
2004.07.04
Как все печально


14-1086964065
Delphin
2004-06-11 18:27
2004.07.04
Красивый интерфейс




   Наверх