IE скриншот проблема в c # windows service - PullRequest
1 голос
/ 08 декабря 2010

Я использую Win 2003 Server.

У меня есть служба Windows, созданная в c # .net, она открывает IE каждые 5 минут с предопределенным URL-адресом, получает снимок экрана и сохраняет его в базе данных. Кажется, простое приложение. Но моя проблема в том, что когда машина заблокирована (клавиша окна + l) или машина вышла из системы, процесс IE запускается, но не может сделать снимок экрана, он принимает только «черную страницу».

Есть ли возможность запустить IE на экране входа в систему? или есть ли решение этой проблемы?

Ответы [ 3 ]

0 голосов
/ 28 февраля 2011

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

0 голосов
/ 26 сентября 2012

Для взаимодействия с рабочим столом с помощью кода:

Поставьте это непосредственно перед запуском службы.

String sYourServiceName = @"MyService" //Change this to r service name
ConnectionOptions co = new ConnectionOptions(); 
co.Impersonation = ImpersonationLevel.Impersonate; 
ManagementScope mgmtScope = new System.Management.ManagementScope(@"root\CIMV2", co); 
mgmtScope.Connect(); 
ManagementObject wmiService; 
wmiService = new ManagementObject("Win32_Service.Name='" + sYourServiceName + "'"); 
ManagementBaseObject InParam = wmiService.GetMethodParameters("Change"); 
InParam["DesktopInteract"] = true; 
ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null);

или

Попробуйте запустить iexplore "Internet Explorer"как системная учетная запись со страницы входа.Просто выполните Process.Start("Iexplore.exe") из службы Windows, и она должна работать, но я не уверен, что вы можете выполнить iexplore как учетную запись системного уровня.

В противном случае вы можете попытаться заблокировать экран блокировки, написавбазовый захватчик ключей или регистратор ключей для блокировки блокировки MENU+L, вы можете сделать это, включив взаимодействие с рабочим столом.Я разместил код, чтобы упростить его или сделал это вручную, перейдя в сервисы и нажав на ваш сервис.Там вы должны увидеть флажок с текстом interact with desktop.

// M

0 голосов
/ 08 декабря 2010

Как указано в Создание снимка экрана WebPage Thumbmail , вы можете попробовать использовать элемент управления WebBrowser в вашем сервисе и создать из него скриншот.

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