你能否在Windows服务中显示消息框(或任何形式的通知)?我尝试过但无法实现。我使用了以下代码:
global::System.Windows.Forms.MessageBox.Show("A fatal error occurred. " +
ServiceName + " is now terminating.");
但是它没有起作用,只是产生了一个错误。
你能否在Windows服务中显示消息框(或任何形式的通知)?我尝试过但无法实现。我使用了以下代码:
global::System.Windows.Forms.MessageBox.Show("A fatal error occurred. " +
ServiceName + " is now terminating.");
但是它没有起作用,只是产生了一个错误。
不可以在服务中显示消息框。如果您想要报告错误,标准做法是使用事件日志。
对于更高级的UI(不仅限于错误报告),通常的做法是创建一个普通的Windows应用程序,将其放置在用户的启动文件夹中(或者注册表的Run键),并通过某种IPC机制(.NET remoting、WCF、常规套接字、命名管道等)与服务进行通信。
您可以使用 "WTSSendMessage(...)" 函数(该函数自 Windows Vista
和 Windows Server 2008
起可用)从服务中显示消息,以下是一篇好的文章: http://msdn.microsoft.com/en-us/library/ms683502(VS.85).aspx
来自维基百科:
虽然通常服务没有用户界面,但开发人员可以添加表单和其他UI组件。在这种情况下,在服务属性对话框的登录选项卡中应该勾选“允许服务与桌面交互”(尽管应该注意这种方法可能会导致安全风险,因为任何已登录的用户都可以与服务交互)。
启用此选项后,您应该能够从服务中显示消息框。
允许服务与桌面交互将帮助您从Services.msc控制台执行此操作。
但是,这是一个非常糟糕的想法。特别是如果您忘记稍后删除此消息框。由于没有人能够单击该消息框,所以服务将挂起。
在WinXP中,服务只有一个交互式进程标志,所有的工作都很好。在10/11上不要尝试这个。
操作系统:XP 启用Windows服务的交互模式
步骤
不可以。Windows服务没有GUI界面。但是你可以显示一个小的系统托盘通知。
System.Windows.Forms
的引用? - SNBS