IE浏览器在c#windows服务中的截图问题

时间:2010-12-08 07:40:12

标签: c# windows internet-explorer service

我正在使用win 2003服务器。

我在c#.net中创建了windows服务,它每5分钟用预定义的URL打开IE,获取它的屏幕截图并将其保存到数据库。这看起来很简单。但我的问题是,当机器锁定(窗口键+ l)或机器注销时,IE进程启动,但不能进行屏幕截图,只需要“黑页”。

在登录界面上有运行IE的选项吗?或者是否有解决这个问题的工作?

3 个答案:

答案 0 :(得分:0)

正如在Generate WebPage Thumbmail Screenshot Image中发布的那样,您可以尝试在服务中使用WebBrowser控件并从中生成屏幕截图。

答案 1 :(得分:0)

该服务需要在勾选“与桌面交互”复选框的情况下运行。当拍摄屏幕截图并且不与其他窗口重叠时,窗口需要在Z顺序中位于最上面。正如我所发现的那样,这种方法很容易出错。

答案 2 :(得分:0)

使用代码与桌面交互:

在启动服务之前将其放入。

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”作为系统帐户。只需从Windows服务执行Process.Start("Iexplore.exe")即可,但我不确定您是否可以将iexplore作为系统级帐户执行。

否则,您可以尝试通过编写基本密钥抓取器或密钥记录器来阻止锁定屏幕以阻止MENU+L锁定,您可以通过启用与桌面的交互来执行此操作。我发布了代码以使其更容易,或者通过转到服务并单击您的服务来手动执行。在那里,您应该会看到一个包含文字interact with desktop的复选框。

// M