kin*_*uk4 6 c# wpf webbrowser-control iwebbrowser2
我正在尝试基于WPF Web浏览器控件创建自定义Web浏览器.我已经实现了IWebBrowser2 com接口,并实施了处理程序Navigating(),NavigatedTo()和LoadCompleted()事件.但是这些事件回调只针对顶级页面触发一次.现在假设一个页面中有一些java脚本,css和图像文件; 浏览器发出单独的HTTP请求以下载这些文件.我们想捕获单个HTTP请求事件.例如,如果HTML页面的结构是
<html>
<body>
<img src="img1.bmp"/>
<imp src="img2.bmp"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我想捕获img1.bmp和img2.bmp的单独下载时间.有人可以建议一种方法来实现这一目标吗?
同时我发现DWebBrowserEvents_Event对于这些图像请求等已经触发了downloadbegin()事件,但我无法获取它正在下载的URL,因为处理程序将void作为参数.
那么有什么方法可以获得相应的URL,因为有一个事件是downloadComplete,当下载完成时会被触发.所以我可以通过这种方式实现这一目标.
但我必须解决上面的图像渲染时间.我被困住了.请帮我....
我对这门课没有很深的了解,但我读了一点书。在 mdsn 中,他们谈到了 downloadbegin() 事件: http://msdn.microsoft.com/en-us/library/cc136556 (v=vs.85).aspx
该事件在DWebBrowserEvents::BeforeNavigate 事件或 DWebBrowserEvents2::BeforeNavigate2 事件之后不久触发,除非导航被取消。容器必须显示的任何动画或“忙碌”指示都应连接到此事件。
当我检查 BeforeNavigate 时,我看到它的参数中有一个 url,我发现了这个(不是 msdn,但它有一个 url 的唯一逻辑)http://blog.yezhucn.com/progie/222647_beforenavigate.htm
void BeforeNavigate(
IDispatch *pDisp, VARIANT *&url, VARIANT *&Flags, VARIANT *&TargetFrameName, VARIANT *&PostData, VARIANT *&Headers, VARIANT_BOOL *&Cancel );
因此,如果您始终有 BeforeNavigate 事件,则可以使用其 url 并检查与 DownloadBegin 事件相关的下一个下载完成事件。我的猜测是,对于每次下载,它都会产生一个 BeforeNavigate 事件,但我不知道,因为我无法尝试(没有代码来检查它),但我希望它会有所帮助。
| 归档时间: |
|
| 查看次数: |
1242 次 |
| 最近记录: |