Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

путь е екзешнику по окну [D5, WinXP]


user51 ©   (2007-01-25 11:59:00) 

Хочу получить путь екзешника  создавшего  окно
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:52:00) [1]


> BiN ©   (25.01.07 12:14) [3]


> У него вроде HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,
> False,ProcessId);


Это я прекрасно вижу.
Он получает хэндл именно процесса, а не окна и уж тем более не модуля.


BiN   (2007-01-25 12:14:00) [2]


> Сергей М. ©   (25.01.07 12:09) [1]
>
> Твой HandleWindow не имеет ни малейшего отношения к хэндлам
> модулей.

У него вроде HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);


> user51   (25.01.07 12:12) [2]

Используй  GetModuleFileNameEx
И переменные лучше бы называть адекватно....


user51   (2007-01-25 12:12:00) [3]

а как получить хендл модуля ?


Сергей М.   (2007-01-25 12:09:00) [4]

Твой HandleWindow не имеет ни малейшего отношения к хэндлам модулей.
Более того, то что ты назвал HandleWindow, должно было быть названо хотя бы как "Handle Process", ибо это хэндл, полученный в результате открытия объекта типа процесс.


Наверх

Титульная страница Поиск, карта сайта Написать письмо