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

时间:2010-11-08 11:59:07

标签: java windows service systray single-instance

我正在使用java创建的桌面应用程序。我们正在为应用程序的Windows版本(用于在Windows O.S.上运行)工作。当我们运行我们的应用程序时,它会使用systemtray作为

在桌面上创建一个托盘图标
SystemTray tray = SystemTray.getSystemTray();

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

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

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

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

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

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

使您的应用程序成为单实例。请告诉你如何使用Java制作.EXE文件?

答案 2 :(得分:1)

要显示托盘图标,您的应用必须正在运行。如果托盘图标出现两次(或更多),则应用程序运行多次。您必须自己添加支票。

您不希望将应用程序作为Windows服务运行,因为通常这些应用程序无法访问Windows桌面。