![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить имя и путь всех процессов? [D7, WinXP]
Seldon © (2004-05-25 01:30:00)Как получить имя и путь всех процессов? Я делаю так:
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 - Pathand filename of the executable file for the process.
Может я чего-то не так понимаю?
Игорь Шевченко (2004-05-25 22:05:00) [1]В XP - GetModuleFileNameEx, или вынимать CommandLine из PEB, как в http://www.schevchenko.net.ru/SRC/EnumFunctions_60.zip
Seldon (2004-05-25 21:57:00) [2]>panov © (25.05.04 19:00) [3]
В данном случае получаю список загруженных DLL'ок (с путями) и один EXE файл (тоже с путём) - та самая программа, которая сожержит этот код.
panov (2004-05-25 19:00: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 17:37:00) [4]>Kerk © (25.05.04 08:25) [1]
Действительно, при выставлении exe'шнику режима совместимости с 98/ME этот же код возвращает полные пути.
А можно их получить без таких извращений?
Kerk (2004-05-25 08:25:00) [5]В XP там только имя файла, полный путь в 9x.
Сам с этим мучался.