欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java列出windows上正在运行的进程信息,javawindows,微软的TASKLIST.

来源: javaer 分享于  点击 45625 次 点评:70

java列出windows上正在运行的进程信息,javawindows,微软的TASKLIST.


微软的TASKLIST.EXE可以输出当前运行进程列表信息。 我们可以用java执行TASKLIST.EXE然后获得输出。

import java.io.*;import java.util.*;public class WindowsUtils {  public static List<String> listRunningProcesses() {    List<String> processes = new ArrayList<String>();    try {      String line;      Process p = Runtime.getRuntime().exec("tasklist.exe /fo csv /nh");      BufferedReader input = new BufferedReader          (new InputStreamReader(p.getInputStream()));      while ((line = input.readLine()) != null) {          if (!line.trim().equals("")) {              // keep only the process name              line = line.substring(1);              processes.add(line.substring(0, line.indexOf(""")));          }      }      input.close();    }    catch (Exception err) {      err.printStackTrace();    }    return processes;  }  public static void main(String[] args){      List<String> processes = listRunningProcesses();      String result = "";      // display the result       int i = 0;      for (String s : processes) {         result += s +",";         i++;         if (i==10) {             result += "\n";             i = 0;         }      }      msgBox("Running processes : " + result);  }  public static void msgBox(String msg) {    javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)       null, msg, "WindowsUtils", javax.swing.JOptionPane.DEFAULT_OPTION);

另外我们还可以调用VBScript来列出windows上正在执行的进程

import java.io.BufferedReader;import java.io.File;import java.io.FileWriter;import java.io.InputStreamReader;import java.util.*;public class VBSUtils {  private VBSUtils() {  }  public static List<String> listRunningProcesses() {    List<String> processList = new ArrayList<String>();    try {        File file = File.createTempFile("realhowto",".vbs");        file.deleteOnExit();        FileWriter fw = new java.io.FileWriter(file);        String vbs = "Set WshShell = WScript.CreateObject(\"WScript.Shell\")\n"                   + "Set locator = CreateObject(\"WbemScripting.SWbemLocator\")\n"                   + "Set service = locator.ConnectServer()\n"                   + "Set processes = service.ExecQuery _\n"                   + " (\"select name from Win32_Process\")\n"                   + "For Each process in processes\n"                   + "wscript.echo process.Name \n"                   + "Next\n"                   + "Set WSHShell = Nothing\n";        fw.write(vbs);        fw.close();        Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath());        BufferedReader input =            new BufferedReader              (new InputStreamReader(p.getInputStream()));        String line;        while ((line = input.readLine()) != null) {            processList.add(line);        }        input.close();    }    catch(Exception e){        e.printStackTrace();    }    return processList;  }  public static void main(String[] args){    List<String> processes = VBSUtils.listRunningProcesses();    String result = "";    Iterator<String> it = processes.iterator();    int i = 0;    while (it.hasNext()) {       result += it.next() +",";       i++;       if (i==10) {           result += "\n";           i = 0;       }    }    msgBox("Running processes : " + result);  }  public static void msgBox(String msg) {    javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)       null, msg, "VBSUtils", javax.swing.JOptionPane.DEFAULT_OPTION);  }}
相关栏目:

用户点评