【问题标题】:Java: How do I find the Process ID of another program?Java:如何找到另一个程序的进程 ID?
【发布时间】:2017-04-09 22:06:47
【问题描述】:

我想知道如何找到另一个程序的进程 ID。 (非java)

当我开始编写我的程序时,我认为 .exe 的进程保持不变,但当我的程序失败时,我重新检查并意识到它改变了!

我从互联网上尝试了许多不同的方法,但没有一个将非 java 程序作为目标。

这是我当前的代码:

try {
                        System.out.println("DefaultButton Pressed");
                        Runtime.getRuntime().exec("taskkill /F /PID "+processID);
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        System.out.println("Failed to kill the process");
                        e.printStackTrace();
                    }

当我按下按钮时,此代码会尝试终止进程

我的代码试图获取 PID,但也失败了

我尝试过这个来获取 PID,但它获取了我的进程 ID (duh)。我一直在尝试将代码更改为不同的非 java 程序,但代码仍然不起作用。

String processID= ManagementFactory.getRuntimeMXBean().getName();
System.out.println("Process ID for this app = " + processID);

这又是自己抓取代码的代码。

我无法调整它来工作。

我什至可以得到另一个非 java 进程的 PID 吗?

编辑 1 这是我的新代码

Process processIdRaw;
            try{
                processIdRaw = Runtime.getRuntime().exec("tasklist /m | find \"<processname>" ");
                System.out.println("Aquired PID");

            }
            catch(IOException e){
                e.printStackTrace();
            }
            int processID = Integer.parseInt(processIdRaw);
            System.out.println("PID:"+processID);

此代码在我的其他代码之前。其他代码在上述代码之后。

我认为Process 类型不适用于int processID = Integer.parseInt(processIdRaw);

我添加了.parseInt,因为我虽然它会从输出中找到数字。

之前因为Process类型而报错

【问题讨论】:

    标签: java eclipse process pid


    【解决方案1】:

    我找不到使 PID 工作的方法,但是!

    Runtime.getRuntime().exec("taskkill /F /IM <processname>.exe")
    

    有效!

    try {
                            System.out.println("DefaultButton Pressed");
                            Runtime.getRuntime().exec("taskkill /F /IM <processname>");
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            System.out.println("Failed to kill the process");
                            e.printStackTrace();
                        }
    

    查找进程名

    1:运行你要杀死的程序

    2:运行 CMD

    3:运行命令tasklist

    4:获取进程名

    【讨论】:

      猜你喜欢
      • 2021-07-09
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 2012-07-12
      • 1970-01-01
      • 2020-09-27
      相关资源
      最近更新 更多