Я столкнулся с проблемой при получении количества активных мониторов, в то время как исполняемый файл работает как служба Windows. Я пытался использовать EnumDisplayDevices и GetSystemMetrics (SM_CMONITROS), чтобы получить количество мониторов, эти два метода дали бы мне правильное количество мониторов при запуске их в режиме консоли (что означает инициированный пользователем), но когда я регистрирую exe как Служба и запустить его через службу Windows, количество мониторов, о которых было сообщено, оказалось неправильным.
Есть ли другой способ определить количество активных мониторов при работе в качестве службы Windows? Или любая другая работа вокруг? Заранее спасибо!
Службам запрещено взаимодействовать с рабочим столом пользователя по соображениям безопасности. Поэтому они работают на своем виртуальном рабочем столе, который не имеет ничего общего с физическим. Вы можете попробовать следующее. В списке услуг менеджера сервиса. Щелкните правой кнопкой мыши ваш сервис, перейдите в свойства и там, чтобы «Войти». Там вы можете изменить учетную запись, которую использует сервис. С помощью «Учетной записи локальной системы» вы можете установить флажок «Разрешить службе взаимодействовать с рабочим столом». Я не пробовал это сам. Но для взаимодействия сервис должен получить доступ к «реальному» рабочему столу и поэтому количество мониторов должно быть правильным.
Других решений пока нет …