3

我有一个 JavaFX 应用程序,它应该在您启动它时检查它是否已经启动(当时只需要运行一个实例)。问题是如何定义!

我尝试将我的 JavaFX 应用程序打包到 .exe 文件中(或制作一个 .exe 启动器),该文件将在 Windows 任务管理器中显示为“MyProg.exe”进程,而不是“javaw.exe”。但这不是解决方案(我已经尝试过 netbeans 的工具),因为它将 jre 添加到我的应用程序中,从而将其从 1 mb 放大。到 130+ mb。(你能帮我吗?

我试过launch4j,但启动器和.exe包都会启动javaw.exe来运行我的应用程序。当我检查进程管理器并看到 2 javaw.exe 我不知道,它是我的应用程序的 2 个实例还是只是另一个正在运行的应用程序?

我希望我描述得很清楚,如果有人可以帮助我,我将非常感激!

4

1 回答 1

2

从您的方法来看,您似乎已经找到了一种从 Java 获取 Windows 进程列表的方法。在这种情况下,您可以使用以下解决方案之一:

  1. 考虑其他过程信息。例如命令行或窗口标题。可以使用wmic.exe PROCESS命令检索 Windows 命令行,对于基于 Unix 的系统,可以使用ps -Af.
  2. 当您的程序启动时,将它的进程 ID 存储在注册表中或 homedir 中的文件中。当另一个实例启动时,它应该检查该值,如果具有该 ID 的进程处于活动状态,则退出。
于 2012-12-18T08:42:38.757 回答