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