Страница 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 не вызывается...