【问题标题】:get the process id of a running java application from a windows application从 Windows 应用程序获取正在运行的 Java 应用程序的进程 ID
【发布时间】:2014-10-14 07:03:56
【问题描述】:
我正在使用 CreateProcess() win32 API 启动一个 java 应用程序 (testApp.exe)。 PROCESS_INFORMATION 结构返回给我的进程 ID 不存在于 taskmanager 或 EnumProcesses() API 的 PID 列表中。我可以看到有一个 javaw.exe 启动了具有一些不同的进程 id。此 javaw.exe 进程 ID 与 PROCESS_INFORMATION 结构返回的 PID 不同。
如何获得正确的 PID。
我想启动这个 java 应用程序,稍后我想用 PID 杀死这个 java 应用程序。
【问题讨论】:
标签:
java
c++
windows
winapi
【解决方案1】:
CreateProcess() 在物理上应该不可能报告 TaskManager 看不到的 PID(除非存在隐藏 PID 的低级木马/rootkit)。在进程结束并且您关闭 CreateProcess() 返回的句柄之前,该进程存在并且其 PID 不会消失。
最有可能发生的情况是,您关闭了来自 CreateProcess() 的句柄,并且相关的新进程正在退出,然后您才有机会查看 TaskManager 或在代码中枚举正在运行的进程。