今天,突发奇想,想开发一个 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文件进行浏览,在今后如果有时间,我会把他完善,呵呵
第一个:怎样在自己的Form而不是在系统默认的浏览器(e.g. IE)中打开新窗口,这个问题比较简单,很快就解决了,最后却发觉这个功能根本就不是我需要的(呵呵,这是后话),解决方案如下:
浙公网安备 33010602011771号