如何以无人参与模式捕获网站的屏幕截图?

时间:2009-11-11 17:14:52

标签: c# screen-capture

我需要编写一个.NET应用程序,定期捕获各种网页的屏幕截图。应用程序需要在无人参与模式下作为Windows服务运行 - 当没有用户会话或工作站被锁定时。类似于:(Screenshot of process under Windows Service)的情况,我需要在网页而不是进程上执行此操作。

当我尝试使用PrintWindow API时,我能够捕获不活动或隐藏的窗口,但在工作站被锁定时会获得黑色图像。试过这种方法(www.devnewsgroups.net/group/microsoft.public.dotnet.framework.windowsforms/topic34231.aspx),但不起作用。

我知道这是可能的,因为有像WebShot(www.websitescreenshots.com)这样的应用能够做到这一点 - 即使在工作站被锁定或作为服务运行时也能捕获网页的屏幕截图。

我错过了什么?我如何让它工作?

非常感谢你的时间。

编辑:更多关于我的方法 - 我正在使用以编程方式创建的.NET WebBrowser控件。我在浏览器控件中加载网页,并使用PrintWindow API从中捕获图像。无论控件是否可见,我都可以这样做,但是当工作站被锁定时,它会让我感到震惊。

2 个答案:

答案 0 :(得分:1)

BrowserShots(http://browsershots.org/ http://browsershots.org/)是一个开源应用程序,似乎与您有类似的目标 - 它们可能已经解决了您的问题。不幸的是,他们的网站目前似乎有点破碎。

答案 1 :(得分:0)

由于您只是渲染网站而没有获取不同程序的截图,您可以尝试使用WebBrowser.DrawToBitmap。

这样你就不用担心登录状态了

http://thepursuitofalife.com/the-missing-drawtobitmap-function-in-the-net-webbrowser-class/