Плагин на основе WebBrowser: перехватить клавиши
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2  Next  :| |:
Total Commander -> Написание плагинов для Total Commander

#1: Плагин на основе WebBrowser: перехватить клавиши Author: Alextp PostPosted: Wed Nov 01, 2006 22:35
    —
Есть LS плагин на основе TWebBrowser (Delphi): OpenOffice.org Viewer.
Не могу релизнуть его из-за одного момента.

Не могу понять, как отдать Листеру наживаемые в браузере кнопки 1-8, F, W, теперь еще и другие (C, L - ну и намутил же Гислер!)
Собственно отдать я могу, но не могу перехватить факт нажатия, т.к. в WB не события OnKeyPress/OnKeyDown, точнее оно есть, но не работает. Как быть?

#2:  Author: NikLocation: Киров PostPosted: Wed Nov 01, 2006 23:40
    —
Я когда-то искал подобную информацию по GekoBrowser (на котором WebView построен), но так и не нашёл ничего дельного Sad Если найдёшь - поделись, плиз Smile

#3:  Author: Alextp PostPosted: Wed Nov 01, 2006 23:57
    —
Nik
У меня есть кое-что, но как это реализовать, не знаю:

Quote:
Дали подсказку: по идее, у WebBrowser должна быть структура
OLEINPLACEFRAMEINFO, в которой можно задать такой параметр, как
IOleInPlaceSite::GetWindowContext
Вот в нем, кажется можно задать свой обработчик клавиш или что-то вроде этого.
Подробностей человек не дал, а я сам не разобрался.

#4:  Author: Alextp PostPosted: Fri Nov 03, 2006 02:27
    —
Вот нашел чего:
http://www.swissdelphicenter.ch/en/showcode.php?id=1055
Кажется, это то что нужно.. в примере перехватываются клавиши стрелок.

Edit
Не годится, там задается обработчик Application.OnMessage, которого в плагине - нету.

#5:  Author: D1PLocation: Тбилиси PostPosted: Fri Nov 03, 2006 12:16
    —
А так ли нужен этот обработчик? Если я правильно понял задачу - можно пойти по другому пути: поставить хук на нажатия клавиш, все обработчики написать самому на WinAPI. Т.е. отлавливать все нажатия внутри окна листера и проверять, какой именно контрол активен. Хук нужен будет локальный, что реализовать довольно просто.
Хотя я WLX-плаги не писал и с TWebBrowser не ковырялся - возможно там какие-то свои заморочки...

#6:  Author: Alextp PostPosted: Fri Nov 03, 2006 13:04
    —
В крайнем случае подойдет и хук (тем более локальный)... Но если можно реализовать средствами WebBrowser, лучше сделать через него. Интересно, будет этот хук работать с ActiveX?

#7:  Author: D1PLocation: Тбилиси PostPosted: Fri Nov 03, 2006 14:30
    —
А почему бы не попробовать? Сейчас по быстрому накидаю код, выложу, как быдет готово.

Добавлено: по быстрому не получилось, на выходных кину.

#8:  Author: D1PLocation: Тбилиси PostPosted: Sat Nov 04, 2006 12:01
    —
В общем выяснилось, что хуку плевать на ActiveX, работает как угодно. Но, к моему величайшему позору, нормально работающий локальный хук мне поставить не удалось. Хук ставится согласно всем возможным мануалам, работает - но при переключении на любое окно, кроме моей программы тут же убивает его процесс.
Самое интересное - что раньше я это неоднократно делал и всё работало.
При переделке на глобальный хук - всё работает. В чём проблема - понять не могу.

Здесь небольшая программка, которая отлавливает нажатия клавиш и отслеживает все параметры, с этим связанные. Взять из неё участки кода для плагина труда не составит.

#9:  Author: Alextp PostPosted: Sun Nov 05, 2006 20:09
    —
Посмотрел, не очень понятно (пока). %)
Непонятно, какие участки кода в программе отвечают за хуки. И как надо переписать модуль Hook.pas примен-но к моему плагу... Если найдете время посмотреть на мой плаг, то исходник здесь:
http://wincmd.ru/plugring/OOSimpleViewer.html , в папке WLXViewer...

#10:  Author: D1PLocation: Тбилиси PostPosted: Sun Nov 05, 2006 21:57
    —
Гм... я то-думал там простой код... Под hook.pas наверно имеется в виду hook.dpr? Это библиотека, в которой находится сама ловушка...
В общем, посмотрю код плагина, может что придумаю.

#11:  Author: Alextp PostPosted: Sun Nov 05, 2006 22:06
    —
Quote:
Под hook.pas наверно имеется в виду hook.dpr? Это библиотека, в которой находится сама ловушка...

Да, hook.dpr.

#12:  Author: D1PLocation: Тбилиси PostPosted: Sun Nov 05, 2006 22:22
    —
Код из папки WLXViewer не компилится. Ругается на отсутствие Compilers.inc (юнит WBProc). Пробовал Delphi6/Delphi2005.
Могу встроить ловушку в WLXViewerPlain.

#13:  Author: Alextp PostPosted: Sun Nov 05, 2006 22:36
    —
Quote:
Код из папки WLXViewer не компилится. Ругается на отсутствие Compilers.inc (юнит WBProc).

Ops!! Обновил.

Quote:
Могу встроить ловушку в WLXViewerPlain.

В WLXViewerPlain нет WebBrowser...

#14:  Author: D1PLocation: Тбилиси PostPosted: Sun Nov 05, 2006 23:06
    —
Quote:
В WLXViewerPlain нет WebBrowser...

А это без разницы. Главное то, что пока я ждал обновления, в Plain-версию хоткей встроил - это оказалось просто. В общем, сейчас приделаю к этой версии, откомментирую и кину.

#15:  Author: Alextp PostPosted: Sun Nov 05, 2006 23:13
    —
Заранее спасибо!

Проверить на этой версии надо так: инсталлируем плагин в TC и открываем файл - если клавиши "1"-"8" в плагине работают, то все ОК.



Total Commander -> Написание плагинов для Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2  Next  :| |:
Page 1 of 2

Powered by phpBB © 2001, 2005 phpBB Group