在java中为系统托盘创建单个实例

Tom*_*man 5 java windows service systray single-instance

我正在使用java创建的桌面应用程序.我们正在为应用程序的Windows版本(用于在Windows OS上运行)工作.当我们运行我们的应用程序时,它会使用systemtray as在桌面上创建一个托盘图标

SystemTray tray = SystemTray.getSystemTray();
Run Code Online (Sandbox Code Playgroud)

我正在创建系统托盘的单个实例,我在应用程序的主类中创建.

我正在为我的应用程序创建exe.我的问题是当我运行我的应用程序的exe文件时,它每次都会创建托盘图标.

我想在我的应用程序中只在桌面上显示一个托盘图标并作为服务运行.只有在卸载应用程序时才会删除此图标.它应该在后台运行作为服务.

我没有任何方式可以帮助我将我的应用程序作为服务运行,并且应该只有一个实例在后台运行.

我想通过创建托盘图标作为服务来运行我的应用程序,并且应该存在单个实例.请指导我这个问题.

感谢您提前提出的所有宝贵建议.

Bas*_*sen 2

正如 Mudassir 所说,您应该在启动程序时添加一个检查,尝试查找应用程序的另一个正在运行的实例。这可以通过在启动时创建特定文件并在关闭时删除它来完成。如果启动应用程序时该文件已经存在,则意味着另一个实例正在运行。您还可以使用进程间通信,但这比简单的文件更困难。

对于“服务”部分,您可以在启动时隐藏主窗口,这样您的应用程序将像 Windows 服务一样运行。