Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Временная блокировка клавиатуры для чужого окна


Автор: uriuriuriuri 15.1.2006, 00:55
Добрый день всем!

Делаю утилиту для запуска js скриптов для Adobe Illustrator CS - висящее topmost меню скриптов с настраиваемыми шорткатами для запуска каждого.
Для перехвата клавиш из окна Иллюстратора использую клавиатурный шпиён с проверкой, что окно Иллюстратора в данный момент активно.

Для избежания коллизии с шорткатами самого Иллюстратора придумал такой механизм.
При нажатии клавиши F12 (не задействованной в шорткатах Иллюстратора по умолчанию) дальнейшие нажатия на буквенно-цифровые клавиши, до момента отпускания
F12 блокируются для Иллюстратора. Они то и обрабатываются в качестве шорткатов утилитой.

На самом деле это получаются не классические Accelerators а мнемонические сокращения, например, для скрипта Close_All_Path.js пользователь может назначить
сокращение F12+(C+A+P) или даже F12+(C+L+O+S+E+A+P).

В связи с этим у меня вопрос:
Как блокировать передачу клавиатурных событий в окно Иллюстратора
после события нажатия на F12, полученному шпиёном
и соответственно разблокировать - после ее отпускания?

Видимо, после сообщения F12 down всякое последующие нажатие на клаву должно для Илла блокироваться, если оно != F12 up. Это понятно.
Непонятен сам механизм блокировки конкретного события. Полагаю, что перехваченное событие нужно аннулировать, что бы оно не прошло дальше к окну Илла?
Подскажите пожалуйста - что можно использовать, куда копать?
Речь конечно о блокировке для конкретного окна - Иллюстратора, всех остальных запущенных приложений это не должно касаться.

Искал долго, нашел только полную блокировку клавы через BlockInput True и всякое подобное, но мне нужна блокировка шпионом на уровне приложения, а не OC.

Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)