Java:如何找到其他程序的进程ID?

时间:2017-04-09 22:06:48

标签: java eclipse process pid

我想知道如何找到另一个程序的进程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

而导致错误

1 个答案:

答案 0 :(得分:0)

我找不到让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:抓取进程名称