Runtime.getRuntime()。exec无法执行/显示Tabtip.exe

时间:2014-04-11 07:22:50

标签: java netbeans javafx

我在一个文本字段中在JavaFX SceneBuilder中设置了这个OnClick方法,如果用户选择了文本字段,它将弹出Windows 8触摸键盘。但是,当我单击文本字段时似乎没有任何反应,但是当我尝试在任务管理器中检查Tabtip.exe时,它确实显示在那里。代码是:

try

{ 
 Runtime rt = Runtime.getRtuntime();
 rt.exec( "cmd /c C:\\Programs Files\\Common Files\\Microsoft Shared\\ink\\TabTip.exe");
}


catch 
{
  ex.printStackTrace();
}

没有触发任何错误,TabTip.exe在任务管理器中运行,但是弹出键盘没有出现,任何人都有解决方法吗?谢谢!

2 个答案:

答案 0 :(得分:3)

每当你想在命令提示符下执行包含空格的命令时,你必须用双引号将它包装起来。

像这样:

String commandStr = "cmd /c \"C:\\Program Files\\Common Files\\Microsoft Shared\\ink\\mip.exe\"";
rt.exec( commandStr );

除此之外,如果你想知道你的错误,你可以从runObject.exe()返回的类Process对象获取错误流。

String commandStr =  "cmd /c C:\\Programs Files\\Common Files\\Microsoft Shared\\ink\\TabTip.exe";   // Like you did

InputStream is = rt.exec( commandStr ).getErrorStream();
int b;
while((b=(is.read()))!=-1)
  System.out.print((char)b);
}

答案 1 :(得分:0)

请这样做。对我来说,使用javaFx应用程序在window10中可以。

ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "\"C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe");
builder.redirectErrorStream(true);
Process p;
try
{
    p = builder.start();
    BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line;
    while (true)
    {
        line = r.readLine();
        if (line == null)
        {
            break;
        }
        System.out.println(line);
    }
}
catch (IOException e)`enter code here`
{
    // TODO Auto-generated catch block
    e.printStackTrace();
}`enter code here`