无法关闭虚拟键盘

时间:2015-10-12 14:04:53

标签: c# .net virtual-keyboard

我正在为触摸屏显示器开发应用程序。我可以使用以下方法调用虚拟键盘:

System.Diagnostics.Process.Start("osk.exe");

我希望通过单击应用程序中的按钮来关闭键盘。 在我的onclick方法中,我有以下代码,但它不起作用:

System.Diagnostics.Process.Start("osk.exe").Kill();

我该如何解决?

3 个答案:

答案 0 :(得分:5)

Process.Start会返回Process个对象。捕获该返回值,并在用户单击按钮时使用它关闭键盘。

var osk = System.Diagnostics.Process.Start("osk.exe");
//Do things

//In your button click event
osk.Close();

答案 1 :(得分:1)

尝试这样做:

Process osk = System.Diagnostics.Process.Start("osk.exe");

当你准备杀死它时,请执行以下操作:

osk.Kill();

您的方法的问题是您的首发osk.exe,然后尝试杀死它。但是你杀死它的代码正在启动一个新的进程,然后杀死那个新的spun up进程而不是你原来的进程。它在OSK显示之前就立即杀了它,因此你甚至看不到第二个实例。

另外,请了解osk.Kill()osk.Close()之间的区别。 Close()相当于击中窗口右上角的小红色X.它允许应用程序自行正常关闭。 Kill()相当于打开任务管理器并强制结束进程。 Close()可能就是你想要的。

答案 2 :(得分:1)

我也很难找到解决方案。虽然这个问题比较老,但如果有人遇到同样的问题,我会发布适用于我的解决方案。

为我启动流程时保存参考无法正常工作。我还是不知道为什么。有效的方法是使用流程名osk循环遍历所有流程。

foreach (System.Diagnostics.Process process in System.Diagnostics.Process.GetProcessesByName("osk"))
{
    process.Kill();
}