我正在为触摸屏显示器开发应用程序。我可以使用以下方法调用虚拟键盘:
System.Diagnostics.Process.Start("osk.exe");
我希望通过单击应用程序中的按钮来关闭键盘。
在我的onclick
方法中,我有以下代码,但它不起作用:
System.Diagnostics.Process.Start("osk.exe").Kill();
我该如何解决?
答案 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();
}