| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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. Спасибо! |