我有一个在用户启动工作站时始终运行的Windows服务。这个Windows服务很关键,我想在发生某些事情时在通知区域显示气球通知,例如服务停止,启动,重启等。
例如:
另外,有没有办法为我的Windows服务显示通知区域图标?
答案 0 :(得分:13)
直接与桌面交互的Windows服务的日子已经结束,所以你必须找到另一种方式。
我所做的是创建一个包含NotifyIcon的普通WinForms应用程序。此应用程序的行为模仿任务管理器的行为,这样它可以从任务栏隐藏,只在系统托盘中可见。如果我右键单击系统托盘图标,我会看到一个菜单。如果我双击该图标,则会显示应用程序窗口。
为了便于WinForms应用程序和Windows服务之间的通信,我使用WCF。具体来说,我使用Juval Lowy的Publish-Subscribe Framework,这对于这种情况非常有效。有关详细信息,请参阅我的回答here。
希望这有帮助。
答案 1 :(得分:0)
我们的新(和免费)ServiceTray utility可让您通过托盘图标控制您的服务。当它检测到您的服务已更改状态(已启动 - >已停止等)时,它还会显示弹出/气球通知。
答案 2 :(得分:-1)
如果您只想向Windows服务发送简单命令,可以通过以下方式向用户应用发送消息。
ServiceController myService = new ServiceController("YOUR Service Name");
myService.ExecuteCommand(123); // do something;
如果在类中重写OnCustomCommand方法,则扩展ServiceBase。 然后,您可以使用此命令触发服务,例如重新加载配置文件或切换到某种状态。