|
#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.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
||||
|
||||
Цитата:
Код:
SetLength(FileName, GetModuleFileName(hp, pchar(FileName), 128); Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#4
|
|||
|
|||
Цитата:
|
#5
|
||||
|
||||
смотри мой предыдущий пост.
Читаем МСДН, GetModuleFileNameEx — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось 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))); Может пригодится кому. |