View previous topic :: View next topic |
Author |
Message |
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Wed Nov 01, 2006 22:35 Post subject: Плагин на основе WebBrowser: перехватить клавиши |
|
|
Есть LS плагин на основе TWebBrowser (Delphi): OpenOffice.org Viewer.
Не могу релизнуть его из-за одного момента.
Не могу понять, как отдать Листеру наживаемые в браузере кнопки 1-8, F, W, теперь еще и другие (C, L - ну и намутил же Гислер!)
Собственно отдать я могу, но не могу перехватить факт нажатия, т.к. в WB не события OnKeyPress/OnKeyDown, точнее оно есть, но не работает. Как быть? |
|
Back to top |
|
|
Nik
Joined: 01 Jan 2005 Posts: 583 Location: Киров
|
(Separately) Posted: Wed Nov 01, 2006 23:40 Post subject: |
|
|
Я когда-то искал подобную информацию по GekoBrowser (на котором WebView построен), но так и не нашёл ничего дельного Если найдёшь - поделись, плиз _________________ Качественный хостинг. |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Wed Nov 01, 2006 23:57 Post subject: |
|
|
Nik
У меня есть кое-что, но как это реализовать, не знаю:
Quote: | Дали подсказку: по идее, у WebBrowser должна быть структура
OLEINPLACEFRAMEINFO, в которой можно задать такой параметр, как
IOleInPlaceSite::GetWindowContext
Вот в нем, кажется можно задать свой обработчик клавиш или что-то вроде этого.
Подробностей человек не дал, а я сам не разобрался. |
|
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Fri Nov 03, 2006 12:16 Post subject: |
|
|
А так ли нужен этот обработчик? Если я правильно понял задачу - можно пойти по другому пути: поставить хук на нажатия клавиш, все обработчики написать самому на WinAPI. Т.е. отлавливать все нажатия внутри окна листера и проверять, какой именно контрол активен. Хук нужен будет локальный, что реализовать довольно просто.
Хотя я WLX-плаги не писал и с TWebBrowser не ковырялся - возможно там какие-то свои заморочки... _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Fri Nov 03, 2006 13:04 Post subject: |
|
|
В крайнем случае подойдет и хук (тем более локальный)... Но если можно реализовать средствами WebBrowser, лучше сделать через него. Интересно, будет этот хук работать с ActiveX? _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Fri Nov 03, 2006 14:30 Post subject: |
|
|
А почему бы не попробовать? Сейчас по быстрому накидаю код, выложу, как быдет готово.
Добавлено: по быстрому не получилось, на выходных кину. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Sat Nov 04, 2006 12:01 Post subject: |
|
|
В общем выяснилось, что хуку плевать на ActiveX, работает как угодно. Но, к моему величайшему позору, нормально работающий локальный хук мне поставить не удалось. Хук ставится согласно всем возможным мануалам, работает - но при переключении на любое окно, кроме моей программы тут же убивает его процесс.
Самое интересное - что раньше я это неоднократно делал и всё работало.
При переделке на глобальный хук - всё работает. В чём проблема - понять не могу.
Здесь небольшая программка, которая отлавливает нажатия клавиш и отслеживает все параметры, с этим связанные. Взять из неё участки кода для плагина труда не составит. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Sun Nov 05, 2006 20:09 Post subject: |
|
|
Посмотрел, не очень понятно (пока). %)
Непонятно, какие участки кода в программе отвечают за хуки. И как надо переписать модуль Hook.pas примен-но к моему плагу... Если найдете время посмотреть на мой плаг, то исходник здесь:
http://wincmd.ru/plugring/OOSimpleViewer.html , в папке WLXViewer... |
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Sun Nov 05, 2006 21:57 Post subject: |
|
|
Гм... я то-думал там простой код... Под hook.pas наверно имеется в виду hook.dpr? Это библиотека, в которой находится сама ловушка...
В общем, посмотрю код плагина, может что придумаю. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Sun Nov 05, 2006 22:06 Post subject: |
|
|
Quote: | Под hook.pas наверно имеется в виду hook.dpr? Это библиотека, в которой находится сама ловушка... |
Да, hook.dpr. |
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Sun Nov 05, 2006 22:22 Post subject: |
|
|
Код из папки WLXViewer не компилится. Ругается на отсутствие Compilers.inc (юнит WBProc). Пробовал Delphi6/Delphi2005.
Могу встроить ловушку в WLXViewerPlain. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Sun Nov 05, 2006 22:36 Post subject: |
|
|
Quote: | Код из папки WLXViewer не компилится. Ругается на отсутствие Compilers.inc (юнит WBProc). |
Ops!! Обновил.
Quote: | Могу встроить ловушку в WLXViewerPlain. |
В WLXViewerPlain нет WebBrowser... |
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Sun Nov 05, 2006 23:06 Post subject: |
|
|
Quote: | В WLXViewerPlain нет WebBrowser... |
А это без разницы. Главное то, что пока я ждал обновления, в Plain-версию хоткей встроил - это оказалось просто. В общем, сейчас приделаю к этой версии, откомментирую и кину. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Sun Nov 05, 2006 23:13 Post subject: |
|
|
Заранее спасибо!
Проверить на этой версии надо так: инсталлируем плагин в TC и открываем файл - если клавиши "1"-"8" в плагине работают, то все ОК. |
|
Back to top |
|
|
|