我在一个文本字段中在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在任务管理器中运行,但是弹出键盘没有出现,任何人都有解决方法吗?谢谢!
答案 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`