![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить полное имя запущенного файла если известен только PI [D7, WinXP]
Roughneck © (2005-09-30 07:51:00)Нужно получить полное имя файла по известному PID
BiN (2005-10-03 11:37:00) [1]alpet © (30.09.05 18:08) [5]
Хм, точно.
Как-то упустил возможность использования Module32First для получения сабжа.
Roughneck (2005-10-03 11:25:00) [2]Всем спасибо. Этого достаточно.
alpet (2005-09-30 18:08:00) [3]BiN © (30.09.05 11:20) [4]
У меня получается полный путь, правда не для всех процессов (кроме системных).
uses windows, messages, TlHelp32;
function FindProcess (pid: DWORD): String;
var
pe: TProcessEntry32;
me: TModuleEntry32;
h: THandle;
begin
result := '';
h := CreateToolHelp32Snapshot (TH32CS_SNAPPROCESS, 0);
pe.dwSize := SizeOf (pe);
if Process32First (h, pe) then
repeat
if pid = pe.th32ProcessID then
begin
me.dwSize := sizeof (me);
CloseHandle (h);
h := CreateToolHelp32Snapshot (TH32CS_SNAPMODULE, pid);
Module32First (h, me);
result := me.szExePath;
break;
end;
until not Process32Next (h, pe);
CloseHandle (h);
end; // FindProcess
...
BiN (2005-09-30 11:20:00) [4]alpet © (30.09.05 11:16) [2]
1. создай список процессов, например средствами ToolHelp API (unit Tlhelp32)
2. Ищи в нем искомый процесс
В NT этого недостаточно для получения полного пути.
BiN (2005-09-30 11:18:00) [5]The GetModuleFileNameEx function retrieves the fully qualified path for the specified module.
(С) msdn
alpet (2005-09-30 11:16:00) [6]1. создай список процессов, например средствами ToolHelp API (unit Tlhelp32)
2. Ищи в нем искомый процесс
Игорь Шевченко (2005-09-30 11:10:00) [7]Начиная с WinXP в psapi появилась функция GetProcessImageFileName.
function GetProcessImageFileName (hProcess: THandle; lpImageFileName: PChar;
nSize: DWORD): DWORD; stdcall; extrenal 'psapi.dll' name 'GetProcessImageFileNameA';