java - 如何获取当前正在运行的应用程序列表,如任务管理器,但使用 JAVA 在后台运行的应用程序除外?

标签 java

如何获取当前正在运行的应用程序列表,如任务管理器,除了使用 JAVA 在后台运行的应用程序? 我找到了这段代码 - https://stackoverflow.com/a/41634959/11297873 :

 Process process = new ProcessBuilder("tasklist.exe", "/fo", "csv", "/nh").start();
    new Thread(() -> {
        Scanner sc = new Scanner(process.getInputStream());
        if (sc.hasNextLine()) sc.nextLine();
        while (sc.hasNextLine()) {
            String line = sc.nextLine();
            String[] parts = line.split(",");
            String unq = parts[0].substring(1).replaceFirst(".$", "");
            String pid = parts[1].substring(1).replaceFirst(".$", "");
            System.out.println(unq + " " + pid);
        }
    }).start();
    process.waitFor();
    System.out.println("Done");

我不想显示系统、Windows、Intel 等后台应用程序....

最佳答案

此处您需要名为 Get-Process 的 powershell cmdlet .

   Process process = new ProcessBuilder("powershell","\"gps| ? {$_.mainwindowtitle.length -ne 0} | Format-Table -HideTableHeaders  name, ID").start();
        new Thread(() -> {
            Scanner sc = new Scanner(process.getInputStream());
            if (sc.hasNextLine()) sc.nextLine();
            while (sc.hasNextLine()) {
                String line = sc.nextLine();
                System.out.println(line);
            }
        }).start();
    process.waitFor();
    System.out.println("Done");

输出是这样的:

ApplicationFrameHost 15592
chrome               12920
cmd                  21104
debian               13264
Far                   3968
firefox              17240
HxOutlook             4784
idea64               13644
MicrosoftEdge         8024
MicrosoftEdgeCP      13908
MicrosoftEdgeCP      14604
mstsc                24636
notepad++             9956
OUTLOOK               9588
pycharm64             6396
rider64              10468
Teams                11540
Telegram             16760


Done

关于java - 如何获取当前正在运行的应用程序列表,如任务管理器,但使用 JAVA 在后台运行的应用程序除外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55469548/

相关文章:

java - 如何在ANTL4中执行解析步骤

Java,火力地堡 : How to search values of an unknown parent

java - ItemStateChanged 在 JComboBox 中调用了两次

java - Lombok @Data 注释将字段名称从 isood 更改为 good

java - 没有注册类 'com.appspot.<projectname>.model.News'

java - 混淆java中的 "==null"和 "==" ""?

java - 检查(并提取)字符串中数值的外观

java - 确保已颁发的证书不会自行颁发证书

java - Gradle 依赖管理

java - 更改 ImageIcon 的大小