Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.04;
Скачать: 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 вся ветка

Текущий архив: 2004.07.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
14-1086581801
Zoom Evstrahiev
2004-06-07 08:16
2004.07.04
Народ! Потестите програмку!


3-1086783009
AleXqwq
2004-06-09 16:10
2004.07.04
Procedure


1-1087887519
Tom
2004-06-22 10:58
2004.07.04
Надо загрузить функцию из DLL написанной на C...


6-1083959776
Prankster
2004-05-07 23:56
2004.07.04
post


1-1087312803
Ivolg
2004-06-15 19:20
2004.07.04
Имя