打印本文 打印本文 关闭窗口 关闭窗口
C#实现 WebBrowser中新窗口打开链接用默认或者指定浏览器打开,不用IE
作者:佚名  文章来源:本站原创  点击数3219  更新时间:2013/1/11 11:27:14  文章录入:mintao  责任编辑:mintao

C#实现 WebBrowser中新窗口打开链接用默认或者指定浏览器打开,不用IE

不多说后面的是转的,下面一段是我闵涛个人在用的:

以下是代码片段:
        private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
        {
            e.Cancel = true;//让webbrowser停止默认执行事件,让它不会用IE打开链接了
            WebBrowser senderb = (WebBrowser)sender;//把sender给拿下,是一个WebBrowser对象
            System.Diagnostics.Process.Start(senderb.StatusText); // 直接调用默认浏览器 
        }

个人觉得下面比较繁琐。

首先要捕获打开链接的事件,这个事件在 WebBrowser的NewWindow里面。
这里我的WebBrowser命名为announce。所以捕获事件如下:
        private void announce_NewWindow(object sender, CancelEventArgs e)
        {  
            e.Cancel = true ;//让webbrowser停止默认执行事件,让它不会用IE打开链接了
            WebBrowser senderb = (WebBrowser)sender;//把sender给拿下,是一个WebBrowser对象
            openUrl(senderb.StatusText);//StatusText即是要打开的新链接地址,把这个地址交给openUrl函数来搞定吧
                
        }

openURL函数得到新链接,进行打开操作啦。函数如下:
    private void openUrl(string url)
        {
            try
            {
                RegistryKey key = Registry.ClassesRoot.OpenSubKey(@"http\shell\open\command\");//获取系统中的浏览器
                string s = key.GetValue("").ToString();

                Regex reg = new Regex("\"([^\"]+)\"");
                MatchCollection matchs = reg.Matches(s);

                string filename = "";
                if (matchs.Count > 0)
                {
                    filename = matchs[0].Groups[1].Value;//取默认浏览器
                    System.Diagnostics.Process.Start(filename,url);
                }
                else
                {
                    System.Diagnostics.Process.Start(url);//取不到默认浏览器就用IE了。。

                }
            }
            catch { }
        }

以上openURL函数你就可以实现各种操作啦,不一定要用我的操作哈。发现网上还没人有这解决办法,

打印本文 打印本文 关闭窗口 关闭窗口