Как я могу показать флажок и значок области уведомлений из службы Windows?

У меня есть служба Windows, которая всегда работает, когда пользователь запускает свою рабочую станцию. Эта служба Windows имеет решающее значение, и я хотел бы показать уведомление о воздушном шаре в области уведомлений, когда произойдут некоторые события, такие как остановки обслуживания, запуск, перезагрузка и т. Д.

Например:
введите описание изображения здесь

Кроме того, есть ли способ показать значок области уведомлений для моей службы Windows?

    Дни служб Windows, взаимодействующих непосредственно с рабочим столом, закончены, поэтому вам нужно найти другой способ.

    То, что я сделал, это создать обычное приложение WinForms, которое включает NotifyIcon. Поведение этого приложения имитирует поведение диспетчера задач, так что оно может быть скрыто от панели задач и видимо только в системном трее. Если я щелкнул правой кнопкой мыши по значку в системном трее, я получаю меню. Если я дважды щелкнул значок, появится окно приложения.

    Чтобы облегчить связь между приложением WinForms и службой Windows, я использую WCF. В частности, я использую структуру публикации публикации Juval Lowy , которая отлично работает для такого сценария. См. Мой ответ здесь для более подробной информации.

    Надеюсь это поможет.

    Наша новая (и бесплатная) служебная программа ServiceTray позволит вам управлять своим сервисом из значка в трее. Он также отображает всплывающие / воздушные уведомления, когда он обнаруживает, что ваша служба изменила состояние (началось-> остановлено и т. Д.).

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

    ServiceController myService = new ServiceController("YOUR Service Name"); myService.ExecuteCommand(123); // do something; 

    Если вы переопределите метод OnCustomCommand в своем classе, он расширяет ServiceBase. Затем вы можете использовать эту команду, чтобы заставить службу делать что-то вроде перезагрузки файла конфигурации или переключения в какое-то состояние.