SHDocVw.WebBrowser的BeforeNavigate2事件无效
使用webBrowser控件,想监控导航开始事件,大致象下面的样子
WebBrowser m_WebBrowser = new WebBrowser()
...
SHDocVw.WebBrowser wb = (SHDocVw.WebBrowser)m_WebBrowser.ActiveXInstance;
wb.BeforeNavigate2 += wb_BeforeNavigate2;
wb.NavigateComplete2 += wb_NavigateComplete2;
wb.DocumentComplete += wb_DocumentComplete;
wb.Silent = true;
void wb_BeforeNavigate2(object pDisp, ref object URL, ref object Flags, ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel)
{
if (pDisp == wb.Application)
{
m_isCompleted = false;
}
}
。。。
只有 BeforeNavigate2事件无法响应,NavigateComplete2 和DocumentComplete 可以工作的很好。
虽然可以使用m_WebBrowser本身的Naviging事件,时机虽然和BeforeNavigate2事件一样,但没有pDisp,
我想要这个东西来判断是否是主页面的导航,比如比较复杂的页面,含有frame,甚至有js弹出窗口,我只想监控
主页面的事件,而传递的pDisp可以帮我做这个判断,但现在问题就是这个事件无论如何不会被响应,百思不得其解啊!
WebBrowser m_WebBrowser = new WebBrowser()
...
SHDocVw.WebBrowser wb = (SHDocVw.WebBrowser)m_WebBrowser.ActiveXInstance;
wb.BeforeNavigate2 += wb_BeforeNavigate2;
wb.NavigateComplete2 += wb_NavigateComplete2;
wb.DocumentComplete += wb_DocumentComplete;
wb.Silent = true;
void wb_BeforeNavigate2(object pDisp, ref object URL, ref object Flags, ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel)
{
if (pDisp == wb.Application)
{
m_isCompleted = false;
}
}
。。。
只有 BeforeNavigate2事件无法响应,NavigateComplete2 和DocumentComplete 可以工作的很好。
虽然可以使用m_WebBrowser本身的Naviging事件,时机虽然和BeforeNavigate2事件一样,但没有pDisp,
我想要这个东西来判断是否是主页面的导航,比如比较复杂的页面,含有frame,甚至有js弹出窗口,我只想监控
主页面的事件,而传递的pDisp可以帮我做这个判断,但现在问题就是这个事件无论如何不会被响应,百思不得其解啊!
...全文
相关推荐
WebBrowser脚本错误的完美解决方案
当IE浏览器遇到脚本错误时浏览器,左下角会出现一个黄色图标,点击可以查看脚本错误的详细信息,并不会有弹出的错误信息框。当我们使用WebBrowser控件时有错误信息框弹出,这样程序显的很不友好,而且会让一些自动执行的程序暂停。我看到有人采取的解决方案是做一个窗体杀手程序来关闭弹出的窗体。本文探讨的方法是从控件解决问题。
SHDocVw支持库
SHDocVw
如何对webbrowser和IE编程
主要是介绍如何对webbrowser和IE编程。
利用WebBrowser获得页面部分数据
Internet Explorer 不只是一个程序,更是许多可重复使用组件的集合与容器。在拆取 Web 页时,最有意思的两个组件是 shdocvw.dll 和 mshtml.dll。第一个组件 shdocvw.dll,包含称为 WebBrowser 的 Microsoft(R) ActiveX(R) 控件,它真实地显示 Web 页。在运行 Internet Explorer 时,显示 Web 页的主窗口就是这样的控件。第二个组件 mshtml.dll,含有能分析 WebBrowser 控件中所包含文档的 HTML 分析器。
SHDocVw.dll 文件与AxSHDocVw.dll 文件
Microsoft WebBrowser 控件创建公共语言运行库代理(SHDocVw.dll) Windows 窗体代理(AxSHDocVw.dll)。 aximp %WINDIR%\system32\shdocvw.dll命令也可得到


