Страница 2 из 2

Добавлено: Вс ноя 05, 2006 22:27
D1P
Плаг скомпилился, но при попытке открыть файл ругается, на отсутствие xsl-файла. Почитал документацию, понял, приблизительно, что это такое... но не нашёл файл ни в исходниках, ни в дистрибе плагина (может плохо искал...). Плаг раньше ни разу не ставил, так что могу чего-то недопонимать; собсно вопрос - где взять файл.

Добавлено: Вс ноя 05, 2006 22:37
Alextp
но не нашёл файл ни в исходниках, ни в дистрибе плагина (может плохо искал...). Плаг раньше ни разу не ставил, так что могу чего-то недопонимать; собсно вопрос - где взять файл.
Пока здесь:
http://forum.wincmd.ru/viewtopic.php?t=6353
http://atorg.net.ru/files/wlx_OOoViewer.zip

Добавлено: Вс ноя 05, 2006 23:01
Alextp
То есть в дистрибе xsl файл как раз есть... На всякий случай еще раз обновил исходник.

Добавлено: Вс ноя 05, 2006 23:24
D1P
http://super.wincmd.ru/files/wlx_ooovie ... upport.rar

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

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

Да, если используешь Delphi 7 или выше, можно раскомментировать в юните hkproc в функциях VirtualKeyCodeToString/StringToVirtualKeyCode условия, использующие константы VK_ - в D6, который у меня сейчас стоит, этих констант не прописано, дописывать самому было лень, я их просто заремил. Но это не критично.

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

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

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

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

Добавлено: Пн ноя 06, 2006 01:26
Alextp
Ясно...

Добавлено: Чт янв 25, 2007 01:12
Alextp
Кажется, решение найдено:
http://forum.sources.ru/index.php?showt ... t&p=570348

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


Edit
Не работает, ApplicationEvents.OnMessage не вызывается...