![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
получить хендл окна... [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