Сделал различие <Enter> и <NumpadEnter> через WM_KEYDOWN и WM_KEYUP. С хуками довольно много мороки, они должны быть в DLL. Вроде работает. Но Windows довольно странно это обрабатывает. Нажмем <Enter> и не отжимая ее жмем <NumpadEnter>. Держим обе клавиши. Эмулятор соответственно получает последовательно коды 0153 и 0166. Отжимаем <Enter>, получаем код 0213. Снова нажимаем <Enter>, соответственно получаем код 0153. А вот дальше самое интересное: отжимаем <Enter>, <NumpadEnter> у нас так и нажат, получаем последовательно коды 0213 и 0206, словно отжали обе клавиши, хотя <NumpadEnter> до сих пор нажат. Функция GetKeyboardState в позиции <Enter>-а говорит, что ни один <Enter> не нажат, хотя <NumpadEnter> так и остается в нажатом состоянии.
Коды клавиатуры можно посмотреть в программе SCAN.SAV на диске sysimage.dsk.
P.S. Интересно всё-таки, а чем руководствовалась Microsoft, когда через GetKeyboardState сделала различие Shift-ов, Ctrl-ей и Alt-ов, а вот Enter-ов не удосужилась.
БОЛЬШОЕ СПАСИБО всем за консультации и помощь !!!




Ответить с цитированием