При запуске в качестве службы Windows, как я могу получить количество активных мониторов? Переполнение стека

Я столкнулся с проблемой при получении количества активных мониторов, в то время как исполняемый файл работает как служба Windows. Я пытался использовать EnumDisplayDevices и GetSystemMetrics (SM_CMONITROS), чтобы получить количество мониторов, эти два метода дали бы мне правильное количество мониторов при запуске их в режиме консоли (что означает инициированный пользователем), но когда я регистрирую exe как Служба и запустить его через службу Windows, количество мониторов, о которых было сообщено, оказалось неправильным.

Есть ли другой способ определить количество активных мониторов при работе в качестве службы Windows? Или любая другая работа вокруг? Заранее спасибо!

1

Решение

Службам запрещено взаимодействовать с рабочим столом пользователя по соображениям безопасности. Поэтому они работают на своем виртуальном рабочем столе, который не имеет ничего общего с физическим. Вы можете попробовать следующее. В списке услуг менеджера сервиса. Щелкните правой кнопкой мыши ваш сервис, перейдите в свойства и там, чтобы «Войти». Там вы можете изменить учетную запись, которую использует сервис. С помощью «Учетной записи локальной системы» вы можете установить флажок «Разрешить службе взаимодействовать с рабочим столом». Я не пробовал это сам. Но для взаимодействия сервис должен получить доступ к «реальному» рабочему столу и поэтому количество мониторов должно быть правильным.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]