如何从Windows服务中显示通知区域气球和图标?

时间:2011-06-01 16:35:46

标签: c# windows-services notifications notification-area

我有一个在用户启动工作站时始终运行的Windows服务。这个Windows服务很关键,我想在发生某些事情时在通知区域显示气球通知,例如服务停止,启动,重启等。

例如:
enter image description here

另外,有没有办法为我的Windows服务显示通知区域图标?

3 个答案:

答案 0 :(得分:13)

直接与桌面交互的Windows服务的日子已经结束,所以你必须找到另一种方式。

我所做的是创建一个包含NotifyIcon的普通WinForms应用程序。此应用程序的行为模仿任务管理器的行为,这样它可以从任务栏隐藏,只在系统托盘中可见。如果我右键单击系统托盘图标,我会看到一个菜单。如果我双击该图标,则会显示应用程序窗口。

为了便于WinForms应用程序和Windows服务之间的通信,我使用WCF。具体来说,我使用Juval LowyPublish-Subscribe Framework,这对于这种情况非常有效。有关详细信息,请参阅我的回答here

希望这有帮助。

答案 1 :(得分:0)

我们的新(和免费)ServiceTray utility可让您通过托盘图标控制您的服务。当它检测到您的服务已更改状态(已启动 - >已停止等)时,它还会显示弹出/气球通知。

答案 2 :(得分:-1)

如果您只想向Windows服务发送简单命令,可以通过以下方式向用户应用发送消息。

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

如果在类中重写OnCustomCommand方法,则扩展ServiceBase。 然后,您可以使用此命令触发服务,例如重新加载配置文件或切换到某种状态。