jjccx

jjccx's blog
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在C#中用WebBrowser的小技巧

Posted on 2004-11-19 19:35  jjccx  阅读(1238)  评论(0)    收藏  举报
    今天,突发奇想,想开发一个 CSDN 浏览器,但是在开发过程中,也就是在第一个窗口(目录窗口)打开第二个窗口(贴子浏览窗口)的时候,遇到了两个问题:
    第一个:怎样在自己的Form而不是在系统默认的浏览器(e.g. IE)中打开新窗口,这个问题比较简单,很快就解决了,最后却发觉这个功能根本就不是我需要的(呵呵,这是后话),解决方案如下:
private void axWebBrowser1_NewWindow2(object sender, AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
{
    Form2 form2 
= new Form2();
    e.ppDisp 
= form2.axWebBrowser1.Application;
    form2.Show();
}

    第二个:第一个问题解决后,我才发觉自己仅仅是打开了页面,但我的目的是对贴子进行分析处理了后才显示出来,这样的话,我就必须取得贴子的URL,怎样取得这个URL呢,在网上找了N久,终于黄天不负有心人……
private SHDocVw.WebBrowser_V1 webBrowser_V1;
private AxSHDocVw.AxWebBrowser axWebBrowser1;

private void MainForm_Load(object sender, System.EventArgs e)
{
    
try
    
{
        webBrowser_V1 
= (SHDocVw.WebBrowser_V1)this.axWebBrowser1.Application;//这句话是我们想要的
        this.webBrowser_V1.NewWindow += new SHDocVw.DWebBrowserEvents_NewWindowEventHandler(webBrowser_V1_NewWindow);

        
object url = @"http://community.csdn.net/Expert/Forum.asp";
        
object r = System.Reflection.Missing.Value;

        
this.axWebBrowser1.Navigate2(ref url,ref r,ref r,ref r,ref r);
    }

    
catch(System.Exception ex)
    
{
    MessageBox.Show(ex.Message);
    }

}


private void webBrowser_V1_NewWindow(string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed)
{
    MessageBox.Show(URL);
//哈哈,we got it
}

呵呵,简单吧!
    这个浏览器很简单,它唯一的好处是不需要CSDN上其它文件(e.g. /expert/Xsl/2.xsl)的支持,可以对保存在本地上的xml文件进行浏览,在今后如果有时间,我会把他完善,呵呵