如何从Java中查找并杀死正在运行的Win-Processes?

GHa*_*Had 24 java windows process

我需要一种Java方法来查找正在运行的Win进程,我知道可执行文件的名称.我想看看它现在是否正在运行,如果我发现它,我需要一种方法来终止这个过程.

1-1*_*x0r 41

private static final String TASKLIST = "tasklist";
private static final String KILL = "taskkill /F /IM ";

public static boolean isProcessRunning(String serviceName) throws Exception {

 Process p = Runtime.getRuntime().exec(TASKLIST);
 BufferedReader reader = new BufferedReader(new InputStreamReader(
   p.getInputStream()));
 String line;
 while ((line = reader.readLine()) != null) {

  System.out.println(line);
  if (line.contains(serviceName)) {
   return true;
  }
 }

 return false;

}

public static void killProcess(String serviceName) throws Exception {

  Runtime.getRuntime().exec(KILL + serviceName);

 }
Run Code Online (Sandbox Code Playgroud)

例:

public static void main(String args[]) throws Exception {
 String processName = "WINWORD.EXE";

 //System.out.print(isProcessRunning(processName));

 if (isProcessRunning(processName)) {

  killProcess(processName);
 }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果taskkill没有结束您的进程,您可能需要添加"/ F"参数来强制它. (3认同)
  • @BullyWiiPlaza 我道歉,你是对的。我在我的工作站上尝试过,但现在不起作用。也许是 Windows 更新或发生了某些变化。我四年多前就发过这篇文章了。我这么说的唯一原因是它在生产环境中工作。但是那是服务器 2008。无论如何,我为你编辑了这篇文章。很好的发现,谢谢 (2认同)

小智 15

您可以使用命令行窗口工具tasklist,taskkill并使用Java从Java调用它们Runtime.exec().