Windows服务可以接收Windows消息吗?

我创build了一个应用程序来接收广播的Windows消息,工作正常。 当我把它变成一个服务,安装它,并启动服务,该服务不会收到消息。

该服务可能必须被授予对桌面的访问权限。 通过服务属性,“登录”选项卡,以本地系统帐户登录,然后选中“允许服务与桌面交互”。

在用户桌面上以SYSTEM身份运行的窗口是一个安全问题,您应该使用其他形式的IPC (如果您只需通知服务而不提供任何其他数据,则(全局)命名事件应该足够)

另一方面,如果您想要从窗口本身捕获有关设备更改,电源和会话事件等的通知,那么当您作为服务运行时,不会使用消息执行此操作,您将在HandlerEx中获得这些事件

谁在发送广播? 除非发送广播的组件作为本地系统运行,否则它不具有将窗口消息发送到不同会话中的窗口句柄的权限。

由于所有Windows服务(从Vista开始)都在Session 0中运行,几乎所有其他组件都在Session> = 1中运行,所以很可能这就是为什么你没有收到广播。