Снимок экрана процесса под службой Windows

Если Ваш код выгоды не будет ни один

  1. Журнал, исключение
  2. Повторно упаковывает исключение в другое исключение, которое соответствует той же абстракции. и бросьте снова
  3. , Обрабатывает исключение способ, которым Вы видите подходящий

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

5
задан John Saunders 19 May 2010 в 08:11
поделиться

4 ответа

Я не думаю, что это возможно.

Нам пришлось изменить наш сценарий, в котором наше приложение запускалось не из службы, а было стандартной программой Windows, имеющей NotifyIcon в угол.

Если кто-то все же найдет реальный ответ, дайте мне знать.

3
ответ дан 13 December 2019 в 19:30
поделиться

Пробовали ли вы запускаться как локальная система с установленным флажком «Разрешить службе взаимодействовать с рабочим столом»?

3
ответ дан 13 December 2019 в 19:30
поделиться

Сейчас я не могу найти соответствующие ссылки, но проблема в том, что служба windows работает в другом сеансе, чем обычное пользовательское приложение.

В XP это было не совсем верно. Здесь все службы запускаются в сеансе 0, и первый пользователь, который входит в систему, также запускается в сеансе 0. Так что в этом случае трюки вроде Allow service to interact with desktop работают. Но если вы быстро переключитесь на другого пользователя, он получит сессию 1 и не будет иметь возможности взаимодействовать со службой напрямую. Это также верно, если вы подключаетесь через RDP к серверной версии (например, 2003 или 2008). Эти логины также будут начинаться в сессии выше 0.

И наконец, есть еще один недостаток использования взаимодействия с рабочим столом:
Если вы включите эту опцию и ваша служба будет работать под учетной записью SYSTEM (по умолчанию), она больше не сможет создать сетевое соединение.

Правильный способ получить пользовательский GUI, работающий со службой - разделить их на два процесса и сделать что-то вроде IPC (inter process communication). Таким образом, служба будет запускаться при запуске машины, а GUI-приложение будет запускаться в пользовательской сессии. В этом случае GUI может создать снимок экрана, отправить его в службу, а служба может делать с ним все, что угодно.

6
ответ дан 13 December 2019 в 19:30
поделиться

Он работает с использованием локальной системы с «Разрешить службе взаимодействовать с рабочим столом»

Вы можете настроить это программно, используя этот пример кода:

http://www.vbforums.com /showthread.php?t=367177 (это vb.net, но очень просто)

-1
ответ дан 13 December 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: