![]() |
|
|
#1
|
|||
|
|||
|
Хочу узнать полное имя и директорию файла, который запустил процесс.
Делаю так: Код:
var buffer: array[0..260] of Char; FileName : string; hp:integer; ProcessId: Dword; begin h:=FindWindow(nil,name); GetWindowThreadProcessId(h,ProcessId); hp:=OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);// hp- хэндл процесса, SetString( FileName, buffer, GetModuleFileName(hp,buffer,SizeOf(buffer)) ); Результат - пустой и FileName и hp . Хде ошибка? |
|
#2
|
||||
|
||||
|
Используй NtQuerySystemInformation.
|
|
#3
|
||||
|
||||
|
Цитата:
Код:
SetLength(FileName, GetModuleFileName(hp, pchar(FileName), 128); |
|
#4
|
|||
|
|||
|
Цитата:
|
|
#5
|
||||
|
||||
|
смотри мой предыдущий пост.
Читаем МСДН, GetModuleFileNameEx Последний раз редактировалось M.A.D.M.A.N., 18.02.2013 в 17:30. |
| Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Redddd (19.02.2013)
| ||
|
#6
|
|||
|
|||
|
Получилось так:
Код:
var
dPID: dWord;
hHandle,hWnd: THandle;
Result:String;
begin
hWnd:=FindWindow(nil,'Wasppacer');
GetWindowThreadProcessId(hWnd, @dPID);
SetLength (Result, MAX_PATH);
hHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, True, dPID);
if GetModuleFileNameEx (hHandle, 0, PChar (Result), MAX_PATH) > 0 then
SetLength (Result, StrLen (PChar (Result)));Может пригодится кому. |