Текущий архив: 2007.02.11;
Скачать: CL | DM;
Внизпуть е екзешнику по окну Найти похожие ветки
← →
user51 (2007-01-25 11:59) [0]Хочу получить путь екзешника создавшего окно
var wndk:integer;
a : Array[0..MAX_PATH] of char
ProcessId : integer;
ThreadId : integer;
HandleWindow : Integer;
wndk:=FindAWindow(ComboBox1.text,"");
if wndk <> 0 then
begin
ThreadId := GetWindowThreadProcessId(wndk,@ProcessId);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
if GetModuleFileName(HandleWindow ,a, sizeof(a))=0
then //Application.MEssageBox(pchar("не могу получить путь"),"ОШИБКА", 0);
end;
если HandleWindow=0 то пишет путь вызвавшей программы
в любом другом случае не может получить путь
в чем засада ?
← →
Сергей М. © (2007-01-25 12:09) [1]Твой HandleWindow не имеет ни малейшего отношения к хэндлам модулей.
Более того, то что ты назвал HandleWindow, должно было быть названо хотя бы как "HandleProcess", ибо это хэндл, полученный в результате открытия объекта типа процесс.
← →
user51 (2007-01-25 12:12) [2]а как получить хендл модуля ?
← →
BiN © (2007-01-25 12:14) [3]
> Сергей М. © (25.01.07 12:09) [1]
>
> Твой HandleWindow не имеет ни малейшего отношения к хэндлам
> модулей.
У него вроде HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
> user51 (25.01.07 12:12) [2]
Используй GetModuleFileNameEx
И переменные лучше бы называть адекватно....
← →
Сергей М. © (2007-01-25 12:52) [4]
> BiN © (25.01.07 12:14) [3]
> У него вроде HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,
> False,ProcessId);
Это я прекрасно вижу.
Он получает хэндл именно процесса, а не окна и уж тем более не модуля.
Страницы: 1 вся ветка
Текущий архив: 2007.02.11;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.128 c