6

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

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

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

4

3 回答 3

12

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

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

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

希望这可以帮助。

于 2011-06-01T17:07:26.767 回答
-1

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

于 2013-03-29T15:43:19.800 回答
-1

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

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

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

于 2011-07-18T14:52:04.457 回答