Форум: "WinAPI";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
ВнизКак получить полное имя запущенного файла если известен только PI Найти похожие ветки
← →
Roughneck (2005-09-30 07:51) [0]Нужно получить полное имя файла по известному PID
← →
Игорь Шевченко © (2005-09-30 11:10) [1]Начиная с WinXP в psapi появилась функция GetProcessImageFileName.
function GetProcessImageFileName (hProcess: THandle; lpImageFileName: PChar;
nSize: DWORD): DWORD; stdcall; extrenal "psapi.dll" name "GetProcessImageFileNameA";
← →
alpet © (2005-09-30 11:16) [2]1. создай список процессов, например средствами ToolHelp API (unit Tlhelp32)
2. Ищи в нем искомый процесс
← →
BiN © (2005-09-30 11:18) [3]The GetModuleFileNameEx function retrieves the fully qualified path for the specified module.
(С) msdn
← →
BiN © (2005-09-30 11:20) [4]alpet © (30.09.05 11:16) [2]
1. создай список процессов, например средствами ToolHelp API (unit Tlhelp32)
2. Ищи в нем искомый процесс
В NT этого недостаточно для получения полного пути.
← →
alpet © (2005-09-30 18:08) [5]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
...
← →
Roughneck (2005-10-03 11:25) [6]Всем спасибо. Этого достаточно.
← →
BiN © (2005-10-03 11:37) [7]alpet © (30.09.05 18:08) [5]
Хм, точно.
Как-то упустил возможность использования Module32First для получения сабжа.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.083 c