【发布时间】:2013-02-24 00:17:45
【问题描述】:
我正在开发一个托管 WebBrowser 控件并保存网页屏幕截图的应用程序。 (C#、VS2008、IE 9、Vista。全部是最新的。FEATURE_BROWSER_EMULATION 设置为 0x2328)
应用程序获取一个 url 列表并逐个导航到 url 并保存屏幕截图。应用程序流程简单如下:从文件中读取 url,首先使用 HttpWebRequest 获取它,如果它存在并且如果它是 html 调用 webBrowser.Navigate(url),等到 WebBrowser.ReadyState 为 WebBrowserReadyState.Complete (处理 WebBrowser.DocumentCompleted 事件并简单在 ReadyState 为 WebBrowserReadyState.Complete 之前什么也不做),再等几秒钟以确保安全(最多测试 10 秒),保存屏幕截图并移至下一个 url。 它适用于几乎所有 url(来自许多不同站点的页面),但嵌入在我的应用程序中的 WebBrowser 不会呈现某些 url,尤其是来自 www.securityfocus.com 的页面,例如:http://www.securityfocus.com/bid/52023
我尝试禁用缓存,在每次请求之前清除缓存,等待最多 10 秒,以便给它一些时间来呈现等无济于事。我在视觉上确认 WebBrowser 没有呈现页面,这不是与保存屏幕截图相关的问题(我正在使用 BitBlt,但我认为它不相关)。页面使用 IE 正常呈现。
如果您对为什么会发生这种情况有任何建议,请告诉我。提前致谢
【问题讨论】:
-
页面在IE中渲染得很好,WebBrowser是否足够扩展?也许尝试最大化窗口?
标签: c# .net webbrowser-control webpage-screenshot