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 Previous  1, 2
 
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
D1P



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

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

Плаг скомпилился, но при попытке открыть файл ругается, на отсутствие xsl-файла. Почитал документацию, понял, приблизительно, что это такое... но не нашёл файл ни в исходниках, ни в дистрибе плагина (может плохо искал...). Плаг раньше ни разу не ставил, так что могу чего-то недопонимать; собсно вопрос - где взять файл.
_________________
База знаний о 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:37    Post subject: Reply with quote

Quote:
но не нашёл файл ни в исходниках, ни в дистрибе плагина (может плохо искал...). Плаг раньше ни разу не ставил, так что могу чего-то недопонимать; собсно вопрос - где взять файл.

Пока здесь:
http://forum.wincmd.ru/viewtopic.php?t=6353
http://atorg.net.ru/files/wlx_OOoViewer.zip
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Mon Nov 06, 2006 00:01    Post subject: Reply with quote

То есть в дистрибе xsl файл как раз есть... На всякий случай еще раз обновил исходник.
_________________
UniViewer - CudaText - LogViewer
Back to top
View user's profile Send private message
D1P



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

Post (Separately) Posted: Mon Nov 06, 2006 00:24    Post subject: Reply with quote

http://super.wincmd.ru/files/wlx_oooviewer_hksupport.rar

Всё работает, но замечен косяк: если с плагина переключиться на другое окно, потом обратно - работать перестаёт. Почему - хз, может какие-то внутренние заморочки листера. Думаю, это легко победить, если потратить немного времени.

В коде есть комментарии там, где я посчитал это необходимым; весь код, который трогать и, в принципе даже смотреть, не надо, вынесен в отдельный юнит hkproc.pas. Для удобства также переменная fmMain в юните UFormMain сделана глобальной (если критично, можно исправить, но тогда потребуется использовать другой способ вызова процедуры, например через сообщения).
В общем, наводку чего, как и куда я дал, думаю дальше разберёшься.

Да, если используешь Delphi 7 или выше, можно раскомментировать в юните hkproc в функциях VirtualKeyCodeToString/StringToVirtualKeyCode условия, использующие константы VK_ - в D6, который у меня сейчас стоит, этих констант не прописано, дописывать самому было лень, я их просто заремил. Но это не критично.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Mon Nov 06, 2006 00:53    Post subject: Reply with quote

Хм, я не понял. Ты же хотел сделать -глобальный- хук. А на локальный как раз жаловался, что после переключения туда-сюда все работать перестает. А тут как раз локальный хук и такой случай....


Quote:
но замечен косяк: если с плагина переключиться на другое окно, потом обратно - работать перестаёт. Почему - хз, может какие-то внутренние заморочки листера. Думаю, это легко победить, если потратить немного времени.
Back to top
View user's profile Send private message
D1P



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

Post (Separately) Posted: Mon Nov 06, 2006 02:21    Post subject: Reply with quote

Если на пальцах: локальный хук от глобального отличается тем, что первый работает внутри адресного пространства одного процесса (т.е. код в exe-файле), а второй работает внутри общего для всех процессов адресного пространства (код в динамической библиотеке). Если wlx-плагин не динамическая библиотека - бросьте в меня камнем Smile.
По идее должны были перехватываться нажатия клавиш во всех окнах, но почему-то что-то не работает. Когда я ставил локальный хук (там и код немного другой), он гючил иначе:
Quote:
Хук ставится согласно всем возможным мануалам, работает - но при переключении на любое окно, кроме моей программы тут же убивает его процесс.

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

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



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Mon Nov 06, 2006 02:26    Post subject: Reply with quote

Ясно...
_________________
UniViewer - CudaText - LogViewer
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Thu Jan 25, 2007 02:12    Post subject: Reply with quote

Кажется, решение найдено:
http://forum.sources.ru/index.php?showtopic=78821&view=findpost&p=570348

Посмотрим, работает ли в плаге объект ApplicationEvents, если работает, то все OK...


Edit
Не работает, ApplicationEvents.OnMessage не вызывается...
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 Previous  1, 2
Page 2 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