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

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

получить хендл окна... [D7, WinXP]


istok ©   (2007-08-31 18:48:00) 

Как максимально просто получить хендл most top окна текущего процесса? Только через EnumWindowsProc ?

Если конкретнее - то в хуковой длл надо получить handle окна, к которому оно прицеплено.


Leonid Troyanovsky   (2007-09-03 09:42:00) [1]


> Riply ©   (03.09.07 00:22) [10]

> А как можно вызвать CallNextHookEx "неправильно" ?

Ну, во-первых, в msdn очень бестолково описано, когда ее нужно
вызывать (а вызывать надо, считай, всегда).
А во-вторых, для 9х нужно было передавать в нее хендл хука,
что вызывало у некоторых программистов затруднение.

--
Regards, LVT.


Инс   (2007-09-03 01:47:00) [2]


> Riply ©   (03.09.07 01:27) [12]

Ну вот, как раз то, что я и предполагал:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1188767364&n=5


Riply   (2007-09-03 01:27:00) [3]

> [11] Инс ©   (03.09.07 01:20)
>Зато полно вопросов по хукам, там и посмотреть... ;)
Гораздо лучше получать информацию из первоисточника :)


Инс   (2007-09-03 01:20:00) [4]


> Нет Фленова - негде посмотреть :)

Зато полно вопросов по хукам, там и посмотреть... ;) Гораздо труднее найти пример правильного вызова.


Riply   (2007-09-03 00:22:00) [5]

> [9] Инс ©   (02.09.07 21:47)
>Ни разу не видел, чтобы задающие на форумах вопросы
>люди вызывали правильно CallNextHookEx (у Фленова неправильно).
А как можно вызвать CallNextHookEx "неправильно" ?
Нет Фленова - негде посмотреть :)


Инс   (2007-09-02 21:47:00) [6]


> istok   (02.09.07 17:48) [8]

Я не понял... Вопрос закрыт? Или вы просто не заметили фразу

> А хук какого типа?

Без нее ответить на поставленный вопрос проблематично...


> А насчет того что хуки не к окнам цепляются - эт сори, давно
> с ними не имел дел и попутал че к чему..

Да нет, просто видимо вы Фленова начитались, а он сам об этом не знал ;) У него там насчет хуков столько ляпов, причем очень даже серьезных. Ни разу не видел, чтобы задающие на форумах вопросы люди вызывали правильно CallNextHookEx (у Фленова неправильно).


istok   (2007-09-02 17:48:00) [7]


> Я думаю, все поняли, что автор имел в виду. Кстати, автор,
>  замечание то верное. Может вы недостаточно хорошо разобрались
> с хуками? Может вам еще рановато?


Конечно плохо разбираюсь. Просто лень РАК юзать по такой мелочи. Дольше объяснять буду чего мне надо.. Хотя если в конце концов задача не решится, то придется обращаться...

А вообще именно этот хук выгружается плохо. Другие хуки выгружались лучше..

А насчет того что хуки не к окнам цепляются - эт сори, давно с ними не имел дел и попутал че к чему..


Углук   (2007-09-01 19:20:00) [8]


> Если я объяснил что-то в каком-то конкретном случае, то
> это не значит, что теперь это нужно использовать везде и
> всюду. В данном случае, уверен, нужно действовать по другому.
>
>

Я просто вспомнил, как я у Инса спрашивал совет, и он мне подсказал на эту дельную мысль. Ссылка на Инса - это простая ремарка, не более того.


Инс   (2007-09-01 17:34:00) [9]


>  istok   (31.08.07 18:48)

А хук какого типа? Если, например, WH_GETMESSAGE, то параметр lParam в функции ловушки указывает на структуру tagMSG, которая содержит дескриптор окна, которому сообщение адресовано.


> А вообще я делал так, как мне объяснил Инс:

Если я объяснил что-то в каком-то конкретном случае, то это не значит, что теперь это нужно использовать везде и всюду. В данном случае, уверен, нужно действовать по другому.


> Хуки цепляются не к окнам, а к потокам.

Я думаю, все поняли, что автор имел в виду. Кстати, автор, замечание то верное. Может вы недостаточно хорошо разобрались с хуками? Может вам еще рановато?


Leonid Troyanovsky   (2007-09-01 17:22:00) [10]


> istok   (31.08.07 18:48)  

> Если конкретнее - то в хуковой длл надо получить handle
> окна, к которому оно прицеплено.

Хуки цепляются не к окнам, а к потокам.
Перечислить окна потока можно EnumThreadWindows.

--
Regards, LVT.


Углук   (2007-09-01 15:57:00) [11]

Ну и что,заголовок окна узнать несложно, оно как правило не меняется. Если меняется (например, сначала "Блокнот" а потом "Блокнот - Безямянный1.txt"), то можно найти хендл окна,зная его класс, что можно подсмотреть в любом отладчике, или например в ДеДе.


istok   (2007-09-01 00:14:00) [12]

>GetForegroundWindow
а кто сказал что окно в фокусе???
я такого не говорил))

>dwInvokerHandle:=FindWindow(nil,'название_окна');
не мой процесс. я в нём лишь хук длл.


Углук   (2007-08-31 23:01:00) [13]

А вообще я делал так, как мне объяснил Инс:

dwInvokerHandle:=FindWindow(nil,'название_окна');


Углук   (2007-08-31 23:00:00) [14]

GetForegroundWindow


Наверх

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