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

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

例如:
在此处输入图像描述

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

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

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

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

希望这可以帮助。

我们的新(和免费) ServiceTray实用程序将允许您从托盘图标控制您的服务。 当它检测到您的服务已更改状态(已启动 – >已停止等)时,它还会显示弹出/气球通知。

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

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

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