2

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

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

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

我错过了什么?我怎样才能让它工作?

非常感谢您的时间。

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

4

2 回答 2

1

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

于 2009-11-11T17:27:36.017 回答
0

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

这样您就不必担心登录状态

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

于 2009-11-11T17:50:10.360 回答