我创建了一个应用程序来接收一个工作正常的广播窗口消息。当我将其转换为服务,安装它,并启动该服务时,该服务不会收到该消息。
答案 0 :(得分:3)
可能必须授予该服务访问桌面的权限。从服务属性,“登录”选项卡,以本地系统帐户登录,然后选中“允许服务与桌面交互”中执行此操作。
答案 1 :(得分:3)
在用户桌面上以SYSTEM身份运行的窗口是一个安全问题,您应该使用其他形式的IPC(如果您需要做的只是通知服务而不提供任何其他数据,a(全局)命名事件应该足够了)
另一方面,如果您希望从Windows自身捕获有关设备更改,电源和会话事件等的通知,那么当您作为服务运行时,您不会对消息执行此操作,您可以在{{3 }}
答案 2 :(得分:1)
谁在发送广播?除非发送广播的组件作为本地系统运行,否则它没有权限将窗口消息发送到不同会话中的窗口句柄。
由于所有Windows服务(自Vista以来)都在会话0中运行,并且几乎所有其他组件都在Session> = 1中运行,因此很可能这就是您没有收到广播的原因。