如何在不执行进程的情况下定位进程?

How can I target a process without executing it?

我最近遇到了以下代码:

Process proc1 = Runtime.getRuntime().exec("C:\Program Files (x86)\...");

效果很好。然而,一个有趣的问题。这段代码实际上打开了一个指定进程的新实例,并将其存储到对象中。如果它已经 运行 并将其存储到对象,它不会以该进程为目标。我猜这就是正在执行此操作的 .exec() 函数调用。如何在不打开新实例的情况下定位一个已经处于活动状态的进程并将其存储到我的 Process 对象中?

注意:我尝试了明显的答案,Process proc1 = new Process("name");Eclipse 说进程无法实例化。我确实在 javadoc 中查找了运行时 class。据我所知,没有明显的方法可以实现我想要实现的目标。似乎是一个简单的问题,我确定之前有人问过它,但我在任何地方都找不到答案,这就是我在这里问的原因。我可能使用了错误的术语,这就是原因。

编辑: 我在 Windows 10

我的objective是将游戏Minecraft的进程attach到一个Process对象上。然后,我想使用 robot.keyPress(KeyEvent.VK_W); 将我的角色向前移动。我不能只打开 minecraft 进程,因为所有要做的就是打开启动器 minecraft.exe 然后我会在 "welcome" 屏幕上。

正如您可以从 Process docs, 中推测的那样,当您从代码中创建子进程时,就会创建进程对象。您可以使用此对象来管理该进程,但 运行 中的其他进程供您 OS 管理(或它们有亲和力的进程)。您必须与 OS 互动才能对他们进行任何操作。

可以在 this answer.

中找到 Windows 中查找和终止进程的示例