2017-02-28 38 views
1
 import java.io.BufferedReader; 
     import java.io.IOException; 
     import java.io.InputStreamReader; 
     public class Main { 
      public static void main(String[] args) { 
      try { 
       String line; 

     Process p = Runtime.getRuntime().exec 
       (System.getenv("windir") +"\\system32\\"+"tasklist.exe"); 
      BufferedReader input = new BufferedReader(new InputStreamReader(
      p.getInputStream())); 
      while ((line = input.readLine()) != null) { 
      System.out.println(line); // <-- Parse data here. 
      } 
      input.close(); 
      } catch (Exception err) { 
      err.printStackTrace(); 
      } 
    } 

} 

这个程序的输出显示了windows任务管理器的进程列表.....但是我也需要运行进程的描述???我如何得到这个?获取windows运行过程描述在java中

回答

0

tasklist.exe取参数/v作为详细。该输出描述

taskmgr.exe 5648 Console 1 18,280 K Running 0:00:00 Windows Task Manager 

你需要更新你调用exec(),以通过 “/ V”。完整的例子包括解析。

public static void main(String[] args) throws IOException { 
    String taskListExe = System.getenv("windir") + "\\system32\\" + "tasklist.exe"; 
    Process p = Runtime.getRuntime().exec(new String[] { taskListExe, "/v" }); 

    BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); 
    Pattern pattern = Pattern.compile("(.*?)\\s+(\\d+).*(\\d+:\\d+:\\d+)\\s+(.*?)"); 
    String line; 
    while ((line = input.readLine()) != null) { 
     Matcher matcher = pattern.matcher(line); 
     if (matcher.matches()) { 
      System.out.println(String.format("%s, pid = %s, description = %s", matcher.group(1), matcher.group(2), 
        matcher.group(4))); 
     } 
    } 
    input.close(); 
} 

输出

firefox.exe, pid = 3152, description = cmd - Get the windows running process description In java - Stack Overfl 
taskmgr.exe, pid = 5648, description = Windows Task Manager 
System Idle Process, pid = 0, description = N/A  
+0

请写全命令?添加/ v给我错误..... –

+0

没有显示过程的描述 –

+0

你的程序输出窗口标题,但我需要的描述....请参阅任务管理器有一列名为描述...其中确切的文件名显示... –