Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 物理按键和编程按键是由.NET还是OS处理的_C#_.net_Keyboard_Interrupt_On Screen Keyboard - Fatal编程技术网

C# 物理按键和编程按键是由.NET还是OS处理的

C# 物理按键和编程按键是由.NET还是OS处理的,c#,.net,keyboard,interrupt,on-screen-keyboard,C#,.net,Keyboard,Interrupt,On Screen Keyboard,首先是一些背景资料 我有一个C.NET应用程序,运行在平板电脑上,即没有物理键盘。我们正在使用Windows XP Tablet edition内置的屏幕键盘在表单上填充文本框控件。表单没有特殊的按键处理,尽管UI的其他组件也处理按键 有时屏幕键盘会停止记录一些按键。表单仍有焦点,光标仍保留在文本框中。反复敲击某个键最终会显示该字符。我们的应用程序使用了大量繁忙的处理线程,但CPU利用率远未达到100% 当这种行为发生时,它会一直保持这种状态,直到我们的应用程序重新启动,然后键盘就会正常工作。当

首先是一些背景资料

我有一个C.NET应用程序,运行在平板电脑上,即没有物理键盘。我们正在使用Windows XP Tablet edition内置的屏幕键盘在表单上填充文本框控件。表单没有特殊的按键处理,尽管UI的其他组件也处理按键

有时屏幕键盘会停止记录一些按键。表单仍有焦点,光标仍保留在文本框中。反复敲击某个键最终会显示该字符。我们的应用程序使用了大量繁忙的处理线程,但CPU利用率远未达到100%

当这种行为发生时,它会一直保持这种状态,直到我们的应用程序重新启动,然后键盘就会正常工作。当连接USB键盘并用于输入时,问题根本不会发生

我感兴趣的是物理按键和程序按键之间有什么区别?程序按键是否会像物理键盘那样产生硬件中断?NET是否可以以不同的方式处理每种类型


任何有助于调试问题的建议都将不胜感激

我从未使用过平板电脑版本的XP OSK,但我使用过XP嵌入式版本。据我所知,Windows API以同样的方式向.NET和MFC应用程序发送按键。事实上,如果我没记错的话,我们无法通过编程来区分两者之间的区别。据我所知,OSK不会导致硬件中断,但虚拟密钥代码将以与物理密钥代码完全相同的方式发送到应用程序级程序

除非您运行的是自定义驱动程序或其他可以访问硬件层的程序,否则听起来问题可能不是您的应用程序造成的

如果你还没有,我会检查触摸屏是否有最新的驱动程序,是否正确校准。我还要检查OSK是否有来自微软的所有最新更新