Автоповтор нажатия клавиш
От: bazzzman  
Дата: 10.04.06 01:06
Оценка:
При зажатии клавиши на клавиатуре начинается автоповтор нажатий, т.е. одна и та же клавиша начинает нажиматься несколько раз. У меня вот такой вопрос: как программно задавить в любой момент времени автоповтор нажатия клавиши?

Если пользователь нажимает клавишу моя прога перехватывает нажатие и начинает что-нибудь делать, и вот как раз в этот момент надо приглушить автоповтор нажатия.

Физически это можно сделать кратковременно нажав в этот момент времени другую клавишу. Например при зажатой клавиши Win надо нажать клавишу T:

D - Left Windows  91 91 1
D - Left Windows  91 91 1
D - Left Windows  91 91 1
D - Left Windows  91 91 1
D - T  84 20 0
U - T  84 20 128
U - Left Windows  91 91 129

При этом автоповтор нажатий прекратится, но клавиша Win останется нажатой (последняя строка в примере — клавишу Win я отпустил через довольно большой промежуток времени и это показывает, что после нажатия клавиши T не было больше автоповтора Win).

Но все это работает если только физически нажать клавишу T на клавиатуре. При программной эмуляции — SendInput, автоповтор Win не прекращается.

Как-то можно разрулить это без создания драйвера/фильтра и без режима ядра?

Не пытайтесь меня переубедить, что это плохая идея, или как-то по-другому решить эту проблему. ЭТО ИМЕННО ТО, ЧТО МНЕ НУЖНО, я уверен. Сейчас я обхожусь и без этого — фильтрую информацию о нажатиях в своем приложении, но теперь приложение слишком разрослось и это стало очень накладно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.