我正在使用这个包含2个文本字段和一个按钮的登录页面。每当我点击第一个文本字段时,都会弹出屏幕键盘(osk.exe),但是当我点击第二个文本字段时,屏幕键盘似乎没有关注第二个文本字段,这意味着我不能在第二个文本字段中键入任何内容,所以我尝试做的是停止osk.exe进程并在我选择第二个文本字段时再次启动它,但是第一次单击时osk似乎没有弹出,我必须单击第二次弹出它,所以这意味着每次我点击文本字段时,它会弹出并逐个关闭OSK,任何人都可以帮我吗?我的两个textfield在JavaFx Scene Builder中有以下onClick方法:
public void osk (){
try
{
killProcess();
Runtime.getRuntime().exec("c:\\Temp\\osk.exe");
}
catch ( Exception ex )
{
ex.printStackTrace();
}
}
public static void killProcess() throws Exception {
Runtime rt = Runtime.getRuntime();
rt.exec("taskkill " + "osk.exe");
Runtime.getRuntime().exec( "taskkill /IM " + "osk.exe" );
}
编辑:我添加了更多说明,抱歉不提前包含它。
答案 0 :(得分:1)
taskkill
是一个Windows cmd命令。我想您可以尝试按rt.exec("taskkill " + "osk.exe");
rt.exec("cmd.exe /c taskkill " + "osk.exe");
答案 1 :(得分:0)
我自己设法解决了这个问题,事实证明我必须延迟线程一秒钟,否则OSK将没有机会弹出,从而被杀死。如果我错了,请纠正我
try
{
killProcess();
try {
Thread.sleep(1000);
} catch(InterruptedException ex)
{
Thread.currentThread().interrupt();
}
Runtime.getRuntime().exec("c:\\Temp\\osk.exe");
}
catch ( Exception ex )
{
ex.printStackTrace();
}
}