【发布时间】:2019-10-29 01:36:19
【问题描述】:
我有一个用 C 编写的 Windows 程序(比如说,launcher)和一个基于 javaFX 的应用程序,打包在 *jar(payload)中。我想做的是实现类似于 JetBrains 的 IntelliJ IDEA 的行为方式。我的意思是,在任务管理器中,我们可以看到这样的进程“树”或“文件夹”:
但在我的情况下,我看到两个完全独立的进程:launcher.exe(仅在[Details] 部分中)和Java (TM) Platform SE binary 在[Processes] 部分中(实际上是我的payload)。
我正在使用CreateProcessW 函数来生成我的进程。在我的代码中:
STARTUPINFOW info = { sizeof(info) };
PROCESS_INFORMATION processInfo;
CreateProcessW(L"C:\\Path\\To\\java.exe", L" -jar C:\\Path\\To\\payload.jar",
NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &info, &processInfo);
如何让我的 java 应用程序在任务管理器中看起来更“原生”?我正在使用jdk1.8.0_172。感谢您的帮助。
【问题讨论】:
-
不确定这会改变什么,但是您正在以一种非常不寻常的方式调用
CreateProcess:当您同时提供应用程序名称和命令行参数时,生成的进程会将该参数作为其第零个命令接收line 参数(与第一个参数相反,这是 C 程序的常规参数)。尝试将所有内容都移到命令行中(正确引用参数),看看是否有区别。