Создание одного экземпляра для системного подноса в Java

StackOverflow https://stackoverflow.com/questions/4123594

Вопрос

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

SystemTray tray = SystemTray.getSystemTray();

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

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

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top