如何通过java程序获取exe的进程id

时间:2014-05-13 10:58:06

标签: java windows jna pid

我正在通过java运行时api运行一个exe

     Process process = runTime.exec("cmd.exe /c start abc.exe "+Id, null, new       File("D:/My"));

并使用jna检索进程ID -

    Kernel32.INSTANCE.GetProcessId((Long) f.get(process));

但进程id返回不是abc.exe而是cmd.exe .....我需要abc.exe的进程ID。不知道如何让任何人都能帮助。

2 个答案:

答案 0 :(得分:2)

processjava.lang.Process类型的对象。您可以使用Reflection API获取abc.exe的进程ID。

Field field = process.getClass().getDeclaredField("pid");
field.setAccessible(true);
System.out.println( field.get( process ) );

答案 1 :(得分:1)

我无法通过cmd.exe获取exe启动的进程ID,但我的目的是通过使cmd.exe等待子exe运行使用以下命令来提供服务

Process process = runTime.exec("cmd.exe /c start /wait abc.exe "+Id, null, new       File("D:/My"));

我使用jna-api

获取了cmd.exe的进程ID
相关问题