Как я могу показать область уведомлений и значок из службы Windows? - PullRequest
6 голосов
/ 01 июня 2011

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

Например:enter image description here

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

Ответы [ 3 ]

13 голосов
/ 01 июня 2011

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

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

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

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

0 голосов
/ 29 марта 2013

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

0 голосов
/ 18 июля 2011

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

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

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

...