Может ли служба Windows получать сообщения Windows? - PullRequest
2 голосов
/ 29 мая 2010

Я создал приложение для получения широковещательного сообщения Windows, которое работает нормально. Когда я превращаю его в службу, устанавливаю и запускаю службу, служба не получает сообщение.

Ответы [ 3 ]

3 голосов
/ 29 мая 2010

Наличие окон, которые запускаются как SYSTEM на рабочем столе пользователя, является проблемой безопасности, вам действительно следует использовать какую-то другую форму IPC (Если все, что вам нужно сделать, это уведомить службу, не предоставляя никаких других данных, (глобального) именованного события должно быть достаточно)

Если, с другой стороны, вы хотите получать уведомления от самих окон об изменениях устройства, событиях питания, сеанса и т. Д., То вы не делаете этого с сообщениями, когда работаете в качестве службы, вы получаете эти события в вашем HandlerEx

3 голосов
/ 29 мая 2010

Сервису, вероятно, должен быть предоставлен доступ к рабочему столу. Сделайте это в свойствах службы, на вкладке «Вход», войдите в систему как локальная системная учетная запись и установите флажок «Разрешить службе взаимодействовать с рабочим столом».

1 голос
/ 31 мая 2010

Кто отправляет трансляцию? Если компонент, отправляющий широковещательную рассылку, не работает как локальная система, он не имеет права отправлять оконные сообщения на дескрипторы окон в разных сеансах.

Поскольку все службы Windows (начиная с Vista) работают в сеансе 0, а почти все другие компоненты работают в сеансе> = 1, скорее всего, поэтому вы не получаете широковещательную рассылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...