专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > WinForm

C# winform调用浏览器打开页面步骤分享,希望对大家有帮助

发布时间:2011-06-23 13:53:01 文章来源:www.iduyao.cn 采编人员:星星草
C# winform调用浏览器打开页面方法分享,希望对大家有帮助

在很多客户端程序中我们都需要调用浏览器打开网页,这里分享一个可以在我winform程序调用浏览器的方法,测试通过了。

声明:这个方法是上万个用户测试通过的,不是我没有测试通过就拿出来分享,那个是自己搬起石头砸自己的脚,还请大家自己下载demo测试一下。

下载查看demo

看演示图

1.调用谷歌浏览器打开网页(打开百度)

2.调用IE打开页面(打开百度)

3.调用用户默认设置的浏览器打开百度页面

测试都是通过的,有些电脑因为没有安装IE浏览器特别是一些Ghost系统,导致IE打开不成功,这里我建议大家可以调用谷歌浏览器,因为比较这是现在最主流的浏览器之一,谷歌没有就打开系统默认的,实在不行就打开IE。

项目测试中,还真有一些客户的电脑用IE打不开,最后安装谷歌就可以了。

附加源码程序demo:

下载查看demo

最后我们加上源码

        /// <summary>
        /// 调用系统浏览器打开网页
        /// http://m.jb51.net/article/44622.htm
        /// http://www.2cto.com/kf/201412/365633.html
        /// </summary>
        /// <param name="url">打开网页的链接</param>
        public static void OpenBrowserUrl(string url)
        {
            try
            {
                // 64位注册表路径
                var openKey = @"SOFTWARE\Wow6432Node\Google\Chrome";
                if (IntPtr.Size == 4)
                {
                    // 32位注册表路径
                    openKey = @"SOFTWARE\Google\Chrome";
                }
                RegistryKey appPath = Registry.LocalMachine.OpenSubKey(openKey);
                // 谷歌浏览器就用谷歌打开,没找到就用系统默认的浏览器
                // 谷歌卸载了,注册表还没有清空,程序会返回一个"系统找不到指定的文件。"的bug
                if (appPath != null)
                {
                    var result = Process.Start("chrome.exe", url);
                    if (result == null)
                    {
                        OpenIe(url);
                    }
                }
                else
                {
                    OpenDefaultBrowserUrl(url);
                }
            }
            catch
            {
                // 出错调用用户默认设置的浏览器,还不行就调用IE
                OpenDefaultBrowserUrl(url);
            }
        }

        /// <summary>
        /// 用IE打开浏览器
        /// </summary>
        /// <param name="url"></param>
        public static void OpenIe(string url)
        {
            try
            {
                Process.Start("iexplore.exe", url);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                // IE浏览器路径安装:C:\Program Files\Internet Explorer
                // at System.Diagnostics.process.StartWithshellExecuteEx(ProcessStartInfo startInfo)注意这个错误
                try
                {
                    if (File.Exists(@"C:\Program Files\Internet Explorer\iexplore.exe"))
                    {
                        ProcessStartInfo processStartInfo = new ProcessStartInfo
                        {
                            FileName = @"C:\Program Files\Internet Explorer\iexplore.exe",
                            Arguments = url,
                            UseShellExecute = false,
                            CreateNoWindow = true
                        };
                        Process.Start(processStartInfo);
                    }
                    else
                    {
                        if (File.Exists(@"C:\Program Files (x86)\Internet Explorer\iexplore.exe"))
                        {
                            ProcessStartInfo processStartInfo = new ProcessStartInfo
                            {
                                FileName = @"C:\Program Files (x86)\Internet Explorer\iexplore.exe",
                                Arguments = url,
                                UseShellExecute = false,
                                CreateNoWindow = true
                            };
                            Process.Start(processStartInfo);
                        }
                        else
                        {
                            if (MessageBox.Show("系统未安装IE浏览器,是否下载安装?", null, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
                            {
                                // 打开下载链接,从微软官网下载
                                OpenDefaultBrowserUrl("http://windows.microsoft.com/zh-cn/internet-explorer/download-ie");
                            }
                        }
                    }
                }
                catch (Exception exception)
                {
                    MessageBox.Show(exception.Message);
                }
            }
        }

        /// <summary>
        /// 打开系统默认浏览器(用户自己设置了默认浏览器)
        /// </summary>
        /// <param name="url"></param>
        public static void OpenDefaultBrowserUrl(string url)
        {
            try
            {
                // 方法1
                //从注册表中读取默认浏览器可执行文件路径
                RegistryKey key = Registry.ClassesRoot.OpenSubKey(@"http\shell\open\command\");
                if (key != null)
                {
                    string s = key.GetValue("").ToString();
                    //s就是你的默认浏览器,不过后面带了参数,把它截去,不过需要注意的是:不同的浏览器后面的参数不一样!
                    //"D:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -- "%1"
                    var lastIndex = s.IndexOf(".exe", StringComparison.Ordinal);
                    var path = s.Substring(1, lastIndex + 3);
                    var result = Process.Start(path, url);
                    if (result == null)
                    {
                        // 方法2
                        // 调用系统默认的浏览器 
                        var result1 = Process.Start("explorer.exe", url);
                        if (result1 == null)
                        {
                            // 方法3
                            Process.Start(url);
                        }
                    }
                }
                else
                {
                    // 方法2
                    // 调用系统默认的浏览器 
                    var result1 = Process.Start("explorer.exe", url);
                    if (result1 == null)
                    {
                        // 方法3
                        Process.Start(url);
                    }
                }
            }
            catch
            {
                OpenIe(url);
            }
        }

  

 如果对你有帮助希望你可以喜欢,点个赞。

15楼harrell
Process.Start(quot;http://www.cnblogs.com/quot;); 可以直接打开默认浏览器的,,最后一个方法明显是用IE打开的,而不是默认打开
14楼Just_Do!
楼主你把推荐数怎么了?
Re: 我和小菜
@Just_Do!,那个是一个bug我已经修改了
13楼天天
呵呵,不错,不过,windows里都有IE的吧
Re: 焚寂
@天天,引用呵呵,不错,不过,windows里都有IE的吧,不一定,Windows 7 及 以后的版本,都可以通过[启用或关闭 Windows 功能]禁用掉IE的。
12楼一株青草儿
没试过指定浏览器,默认的话最简单了
11楼快跑稻草人
兄弟,你不要逗我啊。。。
Re: 我和小菜
@快跑稻草人,?
10楼Engineer
呵呵,加油
9楼AaronYang
第一个好评
Re: 我和小菜
@AaronYang,感谢支持,小功能,在很多电脑测试了
8楼孤城
我能说更直接的不用管用户的浏览器情况吗,, 放一个browser控件里面放个链接地址(放个常用的默认地址),让它新窗口打开, 这样用户点击 就是调用浏览器打开了,不用考虑用户的浏览器情况
Re: 我和小菜
@孤城,也可以的
7楼LanJerry
博主的皮肤能分享吗,看起来很舒服
6楼ChixTech
找到一种刷评论的方法
5楼獴獴
路过收藏
Re: 我和小菜
@獴獴,谢谢支持
4楼yonghu86
右下角怎么做到推荐85的?哈哈有阴影
3楼iImax
试试 Process.Start(quot;http://www.cnblogs.com/quot;); 用默认浏览器打开。何苦
Re: 我和小菜
@iImax,何苦?
2楼hins
作者您好,谢谢分享.请问一下,您的任务栏图标中 IIS图标右侧的那三个图标,一个小人图标,一个F图标,一个磁盘图标,分别是什么程序呢? 还望指教~感谢~
Re: 我和小菜
@hins,fiddler
1楼Aimeast
@dudu,看到第一行代码引用注册表路径,就知道楼主没有进行测试。推荐还这么多,还不能点反对,楼主肯定做过手脚。博客园怎么举报?
Re: 我和小菜
@Aimeast,注册表怎么了,我上万个用户使用这个方法,我测试了一上午,你说我没测试,那我真的没办法回答你了,那个推荐,是我写的时候写错了。我现在改了,你看下。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: