日期:2014-05-18  浏览次数:21069 次

用c#写bho遇到SHDocVw.WebBrowser的问题
C# code

SHDocVw.WebBrowser webBrowser;//当前浏览器控件
string strFilterKeys="game;sex;stock;hnainfo";//过滤关键字,用;隔开。

private void webBrowser_BeforeNavigate2(object pDisp, ref object URL, ref object Flags, ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel)
        {
            webBrowser.Navigate("http://www.163.com", ref Flags, ref TargetFrameName, ref PostData, ref Headers); 
            string strUrl=URL.ToString();

            string[] strFilterKeyItems=this.strFilterKeys.Split(new char[]{';'});

            foreach(string strFilterKey in strFilterKeyItems)
            {
                if(strUrl.IndexOf(strFilterKey)>-1)
                {
                    webBrowser.StatusText="未授权访问包含"+strFilterKey+"关键字的地址!";
                    
                    Cancel=true;
                    return;
                }
            }

            this.webBrowser.StatusText = strUrl;

    }
public int SetSite(object site)
        {
            
            
            if (site != null)
            {
                webBrowser = (SHDocVw.WebBrowser)site;
                webBrowser.BeforeNavigate2 += new DWebBrowserEvents2_BeforeNavigate2EventHandler(webBrowser_BeforeNavigate2);
            }    
            else
            {
                webBrowser.BeforeNavigate2 -= new DWebBrowserEvents2_BeforeNavigate2EventHandler(webBrowser_BeforeNavigate2);
            }
            
            return 0;
        }





这里面webBrowser.Navigate("http://www.163.com", ref Flags, ref TargetFrameName, ref PostData, ref Headers); 
这句话无论加在哪都不执行是怎么回事呢?能否讲解下SHDocVw.WebBrowser这个类呢?

------解决方案--------------------
up
------解决方案--------------------
不知道
------解决方案--------------------
放到窗体加载事件中,没导航应该不会触发webBrowser_BeforeNavigate2