Создание одного экземпляра для системного трея в Java - PullRequest
5 голосов
/ 08 ноября 2010

Я работаю в настольном приложении, созданном в Java. мы работаем для версии Windows (для запуска на Windows O.S.) приложения. Когда мы запускаем наше приложение, оно создает иконку в трее на рабочем столе, используя systemtray как

SystemTray tray = SystemTray.getSystemTray();

Я создаю один экземпляр системного трея, который я создаю в основном классе приложения.

Я создаю exe для своего приложения. Моя проблема в том, что когда я запускаю exe-файл моего приложения, он каждый раз создает иконку в трее.

Я хочу, чтобы в моем приложении только один значок на панели задач присутствовал на рабочем столе и работал как служба. этот значок должен быть удален только при удалении приложения. Он должен работать как служба в фоновом режиме.

Я не получаю никакой информации, которая помогла бы мне запустить приложение в качестве службы, и в фоновом режиме должен быть только один экземпляр.

Я хочу запустить свое приложение, создав иконку в трее как сервис, и должен присутствовать один экземпляр. Пожалуйста, ведите меня в этом вопросе.

Спасибо за ваши ценные предложения заранее.

Ответы [ 3 ]

2 голосов
/ 08 ноября 2010

Как сказал Мудассир, вы должны добавить проверку при запуске программы, которая пытается найти другой работающий экземпляр вашего приложения.Это может быть сделано путем создания определенного файла при запуске и удаления его при закрытии.Если файл уже присутствует при запуске приложения, это означает, что запущен другой экземпляр.Вы также можете использовать межпроцессное взаимодействие, но это будет сложнее, чем простой файл.

Для части «service» вы можете при запуске скрыть главное окно, чтобы ваше приложение работало так, какбыла служба Windows.

1 голос
/ 08 ноября 2010

Для отображения иконки в трее ваше приложение должно быть запущено.Если ваш значок в трее появляется там дважды (или больше), значит ваше приложение запускается несколько раз.Вы должны добавить проверку для этого самостоятельно.

Вы не хотите запускать свое приложение как службу Windows, так как обычно они не имеют доступа к рабочему столу Windows.

1 голос
/ 08 ноября 2010

Сделайте заявку в единственном экземпляре. И, пожалуйста, расскажите, как вы делаете файл .EXE на Java?

...