我有一个Windows服务,当用户启动他们的工作站时总是运行。此Windows服务是至关重要的,我想显示在通知区域气球通知当某些事情发生,如该服务停止,启动,重新启动等如何显示来自Windows服务的通知区域气球和图标?
例如:
而且,有没有办法为我的Windows服务显示通知区域图标?
我有一个Windows服务,当用户启动他们的工作站时总是运行。此Windows服务是至关重要的,我想显示在通知区域气球通知当某些事情发生,如该服务停止,启动,重新启动等如何显示来自Windows服务的通知区域气球和图标?
例如:
而且,有没有办法为我的Windows服务显示通知区域图标?
Windows服务直接与桌面交互的时代已经结束,所以你必须找到另一种方式。
我所做的是创建一个包含NotifyIcon的普通WinForms应用程序。此应用程序的行为模仿任务管理器的行为,以便它可以从任务栏隐藏,并且只能在系统托盘中可见。如果我右键单击系统托盘图标,我会看到一个菜单。如果我双击该图标,则会显示应用程序窗口。
为了便于WinForms应用程序和Windows服务之间的通信,我使用WCF。具体来说,我使用Juval Lowy的Publish-Subscribe Framework,这对于这种场景非常有效。有关更多详细信息,请参阅我的回答here。
希望这会有所帮助。
如果你只是想发送一个简单的命令到你的Windows服务,你可以通过以下方式从你的用户应用程序发送一条消息。
ServiceController myService = new ServiceController("YOUR Service Name");
myService.ExecuteCommand(123); // do something;
如果在类中覆盖extends ServiceBase中的OnCustomCommand方法。 然后,您可以使用此命令触发服务执行某些操作,例如重新加载配置文件或切换到某种状态。
我们的新(免费)ServiceTray utility将允许您从托盘图标控制您的服务。当它检测到您的服务已更改状态(开始 - >停止等)时,它还会显示弹出/气球通知。
这篇文章可能有帮助:http://stackoverflow.com/questions/2652254/how-can-i-display-a-system-tray-icon-for-c-window-service服务不能直接拥有一个SysTray图标。 – keyboardP 2011-06-01 16:49:02