下面的编码将在killProcess()杀死之后运行OSK(屏幕键盘)进程,之前在我添加Thread.sleep 1秒之前它不会弹出。那么有没有什么方法可以确保killProcess()在没有Thread.sleep一秒钟的情况下启动OSK进程之前完全执行?一些不是基于时间的东西,一个在进入下一行之前完全运行killProcess()的代码。对不起任何困惑和感谢阅读!希望有人愿意帮助我。
public static void main(String... args) {
try {
killProcess();
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
Runtime.getRuntime().exec("c:\\Temp\\osk.exe");
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void killProcess() throws Exception {
Runtime rt = Runtime.getRuntime();
rt.exec("cmd.exe /c taskkill " + "osk.exe");
Runtime.getRuntime().exec("taskkill /IM " + "osk.exe");
}
答案 0 :(得分:0)
public static void main(String... args) {
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("cmd.exe /c taskkill " + "osk.exe").waitFor();
rt.exec("taskkill /IM " + "osk.exe").waitFor();
}
Runtime.exec(String)返回Process,其中包含waitFor()方法。这将阻止当前Thread,直到进程终止。