Сначала некоторая справочная информация ...
У меня есть приложение на C # .NET, которое работает на планшетном ПК, то есть без физической клавиатуры. Мы используем экранную клавиатуру, встроенную в Windows XP Tablet Edition, для заполнения элементов управления TextBox в форме. Для формы нет специальной обработки нажатия клавиш (хотя другие компоненты пользовательского интерфейса обрабатывают нажатия клавиш).
Иногда экранная клавиатура перестает регистрировать некоторые нажатия клавиш. Форма все еще имеет фокус, а курсор остается в текстовом поле. Повторное нажатие клавиши в конечном итоге приведет к отображению символа. Наше приложение использует несколько занятых потоков обработки, однако это далеко от 100% загрузки ЦП.
Когда это происходит, оно остается таким до перезапуска нашего приложения, после чего клавиатура ведет себя нормально. Проблема не возникает вообще, когда USB-клавиатура подключена и используется для ввода.
Мне интересно, какие различия существуют между физическими и программными нажатиями клавиш? Генерируют ли программные нажатия аппаратные прерывания, как физическая клавиатура? Может ли .NET обрабатывать каждый тип по-разному?
Буду очень признателен за любые предложения, которые могут помочь отладить проблему!