Я создал java-программу, которая устанавливается как служба Windows на машине с win10 с помощью winsw. Этой программе нужен доступ к рабочему столу текущего пользователя, так как она периодически создает скриншоты (используя java.awt.Robot) и обрабатывает их.

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

2
alindner 6 Апр 2020 в 16:50

1 ответ

Вы должны установить <interactive> True в файле конфигурации, чтобы разрешить службе взаимодействовать с сеансом 0. Но в ОС UAC (Windows Vista или выше) службы больше не позволяют взаимодействовать с рабочим столом.

Пример: - <interactive />

Для получения дополнительной информации прочитайте это.

0
Buddhika Chathuranga 8 Май 2020 в 12:23
Поэтому я и написал, что использую win10. UAC - это именно та причина, по которой я задал этот вопрос.
 – 
alindner
8 Май 2020 в 21:54
Вы установили true в XML конфигурации?
 – 
Buddhika Chathuranga
9 Май 2020 в 05:57
Да. и (как вы уже сказали) в документе говорится: «Обратите внимание, что с момента появления UAC (Windows Vista и новее) службам больше не разрешено взаимодействовать с рабочим столом. В этих ОС все, что это делает, это позволяет пользователю чтобы переключиться на отдельную оконную станцию ​​для взаимодействия со службой».
 – 
alindner
11 Май 2020 в 13:21
Хм.. Я думаю, что у меня не хватает знаний в этой области. В любом случае извините за неудобный ответ.
 – 
Buddhika Chathuranga
11 Май 2020 в 19:34