Java任务管理器程序

时间:2014-07-10 17:00:40

标签: java

我想阅读在任务管理器(应用程序选项卡)中运行的活动应用程序。

我试过了代码

Runtime.getRuntime().exec("tasklist.exe /nh")

正在获取活动的进程,但我需要Active应用程序,

2 个答案:

答案 0 :(得分:0)

活动应用程序是notepad.exe。看起来您需要/需要应用程序的当前标题。这可以通过执行wmic程序和process命令来完成。您可以使用ProcessBuilderProcess在Java中执行此操作。代码改编自Detect if a process is running using WMIC

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

class WindowsUtils {
    private WindowsUtils() {
    }

    public static String listOfProcesses()
            throws IOException {
        InputStream is = null;
        InputStreamReader isr = null;
        BufferedReader br = null;

        List<String> command = new ArrayList<String>();
        command.add("WMIC");
        command.add("process");
        try {
            ProcessBuilder builder = new ProcessBuilder(command);
            Process process = builder.start();
            is = process.getInputStream();
            isr = new InputStreamReader(is);
            br = new BufferedReader(isr);
            StringBuilder sw = new StringBuilder();

            String line;
            while ((line = br.readLine()) != null) {
                sw.append(line.trim());
                sw.append(System.lineSeparator());
            }
            return sw.toString();
        } finally {
            if (br != null)
                br.close();
            if (isr != null)
                isr.close();
            if (is != null)
                is.close();
        }
    }
}

public class WmicExample {

    public static void main(String[] args) throws Exception {
        System.out.println(WindowsUtils.listOfProcesses());
    }
}

答案 1 :(得分:0)

您可以通过使用广告素材过滤来消除您想要的内容,但不太可能完全您想要的内容&#34; weed out&#34; “应用程序”选项卡中不可能出现的流程,但您仍会看到流程信息。

尝试此命令:

tasklist /V /FI "STATUS eq RUNNING" /FI "Windowtitle ne N/A" /FI "Username eq <your username>" /FI "Memusage gt 15000"