| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Клавиатурная эмуляция мыши |
| Автор: qknife 12.12.2010, 18:24 | ||
| Пытаюсь написать клавиатурный эмулятор мыши. Создал глобальный хук на основе WH_KEYBOARD_LL. Все запускается и вроде бы работает, но существует проблема с переключением NumLock. Эмуляция включается/отключается именно этой клавишей, а эмуляция мыши заточена на цифры дополнительной клавиатуры. Поэтому бывают случаи, когда режим эмуляции включен, а NumLock отключена - в результате цифровые кнопки не обрабатываются. Решал проблему так: 1. Завел функцию SetNumLock переключения Намлока (взял с MSDN): она синтезирует 2 keybd_event 2. Пытаюсь при старте программы всегда держать лампочку NumLock включенным. Для этого при старте вызываю принудительный SetNumLock, а в обработчике хука ставлю такой код:
В результате: лампочка успевает переключиться 1 раз, а затем не гаснет. Однако все равно режим эмуляции часто не совпадает с реальным состоянием Намлок В чем может быть трабл? Как добиться, чтобы лампочка всегда мигала, и при этом точно установить нужное состояние Намлока - т.е. при эмуляции, если состояние Намлока переведено на стрелки - включить Намлок |