嗨,我在Win7中使用。net触摸屏应用程序时遇到了一个问题(没有连接PC键盘)。我使用的应用程序的一部分作为终端窗口到外部设备。当终端窗口打开时,我通过调用:-
启动屏幕上的键盘string progFiles = @"C:Program FilesCommon FilesMicrosoft Sharedink";
string onScreenKeyboardPath = System.IO.Path.Combine(progFiles, "TabTip.exe");
oskProcess = System.Diagnostics.Process.Start(onScreenKeyboardPath);
在我完成了终端窗口之后,我希望通过单击表单的X来关闭表单,这将自动关闭屏幕上的键盘。所以我调用:-
Process[] oskProcessArray = Process.GetProcessesByName("TabTip");
foreach (Process onscreenProcess in oskProcessArray)
{
onscreenProcess.Kill();
onscreenProcess.Dispose();
}
这个工作完美,除非最后按下的键是CTRL, ALT或SHIFT键。如果是这样的话,即使在键盘关闭后,这些键盘仍然"卡住"。如果我重新启动屏幕上的键盘,它们仍然高亮显示。
如果我在关闭窗体之前先点击键盘上的红色X,一切都很好。但我想/需要关闭两者一起从我的代码一个单一的点击。那么,当退出键盘时,我如何清除任何"卡住"的键,或者有不同的方法来做到这一点?
好,这似乎解决了问题如果我等待相当长的时间(1500毫秒),然后杀死这个过程,它似乎都工作!!
Process[] oskProcessArray = Process.GetProcessesByName("TabTip");
foreach (Process onscreenProcess in oskProcessArray)
{
Application.DoEvents();
onscreenProcess.CloseMainWindow();
Application.DoEvents();
Thread.Sleep(1500);
onscreenProcess.Kill();
}