Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Плагин на основе WebBrowser: перехватить клавиши
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Wed Nov 01, 2006 22:35    Post subject: Плагин на основе WebBrowser: перехватить клавиши Reply with quote

Есть LS плагин на основе TWebBrowser (Delphi): OpenOffice.org Viewer.
Не могу релизнуть его из-за одного момента.

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



Joined: 01 Jan 2005
Posts: 583
Location: Киров

Post (Separately) Posted: Wed Nov 01, 2006 23:40    Post subject: Reply with quote

Я когда-то искал подобную информацию по GekoBrowser (на котором WebView построен), но так и не нашёл ничего дельного Sad Если найдёшь - поделись, плиз Smile
_________________
Качественный хостинг.
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Wed Nov 01, 2006 23:57    Post subject: Reply with quote

Nik
У меня есть кое-что, но как это реализовать, не знаю:

Quote:
Дали подсказку: по идее, у WebBrowser должна быть структура
OLEINPLACEFRAMEINFO, в которой можно задать такой параметр, как
IOleInPlaceSite::GetWindowContext
Вот в нем, кажется можно задать свой обработчик клавиш или что-то вроде этого.
Подробностей человек не дал, а я сам не разобрался.
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Fri Nov 03, 2006 02:27    Post subject: Reply with quote

Вот нашел чего:
http://www.swissdelphicenter.ch/en/showcode.php?id=1055
Кажется, это то что нужно.. в примере перехватываются клавиши стрелок.

Edit
Не годится, там задается обработчик Application.OnMessage, которого в плагине - нету.
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Fri Nov 03, 2006 12:16    Post subject: Reply with quote

А так ли нужен этот обработчик? Если я правильно понял задачу - можно пойти по другому пути: поставить хук на нажатия клавиш, все обработчики написать самому на WinAPI. Т.е. отлавливать все нажатия внутри окна листера и проверять, какой именно контрол активен. Хук нужен будет локальный, что реализовать довольно просто.
Хотя я WLX-плаги не писал и с TWebBrowser не ковырялся - возможно там какие-то свои заморочки...
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Fri Nov 03, 2006 13:04    Post subject: Reply with quote

В крайнем случае подойдет и хук (тем более локальный)... Но если можно реализовать средствами WebBrowser, лучше сделать через него. Интересно, будет этот хук работать с ActiveX?
_________________
UniViewer - CudaText - LogViewer
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Fri Nov 03, 2006 14:30    Post subject: Reply with quote

А почему бы не попробовать? Сейчас по быстрому накидаю код, выложу, как быдет готово.

Добавлено: по быстрому не получилось, на выходных кину.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Sat Nov 04, 2006 12:01    Post subject: Reply with quote

В общем выяснилось, что хуку плевать на ActiveX, работает как угодно. Но, к моему величайшему позору, нормально работающий локальный хук мне поставить не удалось. Хук ставится согласно всем возможным мануалам, работает - но при переключении на любое окно, кроме моей программы тут же убивает его процесс.
Самое интересное - что раньше я это неоднократно делал и всё работало.
При переделке на глобальный хук - всё работает. В чём проблема - понять не могу.

Здесь небольшая программка, которая отлавливает нажатия клавиш и отслеживает все параметры, с этим связанные. Взять из неё участки кода для плагина труда не составит.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Sun Nov 05, 2006 20:09    Post subject: Reply with quote

Посмотрел, не очень понятно (пока). %)
Непонятно, какие участки кода в программе отвечают за хуки. И как надо переписать модуль Hook.pas примен-но к моему плагу... Если найдете время посмотреть на мой плаг, то исходник здесь:
http://wincmd.ru/plugring/OOSimpleViewer.html , в папке WLXViewer...
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Sun Nov 05, 2006 21:57    Post subject: Reply with quote

Гм... я то-думал там простой код... Под hook.pas наверно имеется в виду hook.dpr? Это библиотека, в которой находится сама ловушка...
В общем, посмотрю код плагина, может что придумаю.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Sun Nov 05, 2006 22:06    Post subject: Reply with quote

Quote:
Под hook.pas наверно имеется в виду hook.dpr? Это библиотека, в которой находится сама ловушка...

Да, hook.dpr.
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Sun Nov 05, 2006 22:22    Post subject: Reply with quote

Код из папки WLXViewer не компилится. Ругается на отсутствие Compilers.inc (юнит WBProc). Пробовал Delphi6/Delphi2005.
Могу встроить ловушку в WLXViewerPlain.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Sun Nov 05, 2006 22:36    Post subject: Reply with quote

Quote:
Код из папки WLXViewer не компилится. Ругается на отсутствие Compilers.inc (юнит WBProc).

Ops!! Обновил.

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

В WLXViewerPlain нет WebBrowser...
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Sun Nov 05, 2006 23:06    Post subject: Reply with quote

Quote:
В WLXViewerPlain нет WebBrowser...

А это без разницы. Главное то, что пока я ждал обновления, в Plain-версию хоткей встроил - это оказалось просто. В общем, сейчас приделаю к этой версии, откомментирую и кину.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Sun Nov 05, 2006 23:13    Post subject: Reply with quote

Заранее спасибо!

Проверить на этой версии надо так: инсталлируем плагин в TC и открываем файл - если клавиши "1"-"8" в плагине работают, то все ОК.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group