2014-04-11 76 views
1

我已经在JavaFX SceneBuilder中的文本字段上设置了此OnClick方法,如果用户选择文本字段,将弹出Windows 8触摸键盘。然而,当我单击文本框时,似乎没有任何事情发生,但当我尝试检查任务管理器中的Tabtip.exe时,它确实显示在那里。该代码是:Runtime.getRuntime()。exec无法执行/显示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在任务管理器中运行,但弹出键盘显示不出来,任何人有任何解决这个?谢谢!

+1

1-使用'ProcessBuilder',尝试'\“C:\\ Programs Files \\ Common Files \\ Microsoft Shared \\ ink \\ TabTip.exe \”'而不是 - 和cmd/c'我不喜欢长路径名... – MadProgrammer

+0

是的,文件路径中的空格将需要用引号包装。 –

+0

我曾尝试只将“\”C:\\ Programs Files \\ Common Files \\ Microsoft Shared \\ ink \\ TabTip.exe \“,但当我点击文本字段时出现运行时错误:”java.IOException :CreateProcess错误= 740。请求操作需要提升“ – Artest113

回答

3

无论何时您想要执行命令提示符中包含空格的命令,都必须用双引号包装它。

像这样:

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

而且除此之外,如果你想知道你的错误,你可以从类工艺对象,它是由runtimeObject.exec返回错误流()。

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); 
} 
+0

非常感谢!现在弹出键盘:) – Artest113

相关问题