我正在通过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。不知道如何让任何人都能帮助。
答案 0 :(得分:2)
process
是java.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