农民 发表于 2023-7-28 12:04:24

C# 调用浏览器打开网址


[*]调用方法体      public void OpenBrowser()
      {
            string url = "http://localhost:8055/api";
            bool openRes = OpenBrowserHelper.OpenChromeBrowserUrl(url);

            if (!openRes)
                openRes = OpenBrowserHelper.OpenDefaultBrowserUrl(url);

            if (!openRes)
            {
                // 打开下载链接,从官网下载 谷歌
                if (MessageBox.Show("系统未安装谷歌(Chrome)浏览器,是否下载安装?", null, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                  OpenBrowserHelper.OpenIe("https://www.google.cn/chrome/");
                }
            }
      }
[*]打开浏览器帮助类public class OpenBrowserHelper
    {
      /// <summary>
      /// 调用谷歌(Chrome)浏览器
      /// </summary>
      /// <param name="url">打开网页的链接</param>
      public static bool OpenChromeBrowserUrl(string url)
      {
            bool isOpen = true;
            try
            {
                // 谷歌浏览器就用谷歌打开,没找到就用系统默认的浏览器
                // 谷歌卸载了,注册表还没有清空,程序会返回一个"系统找不到指定的文件。"的bug
                var chromeKey = @"\Software\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe";
                // 通过注册表找到谷歌浏览器安装路径
                string chromeAppFileName = (string)(Registry.GetValue("HKEY_LOCAL_MACHINE" + chromeKey, "", null) ?? Registry.GetValue("HKEY_CURRENT_USER" + chromeKey, "", null));
                // 找到谷歌浏览器则打开
                if (!string.IsNullOrWhiteSpace(chromeAppFileName))
                {
                  Process.Start(chromeAppFileName, url);
                }
                else
                {
                  isOpen = false;
                  //默认浏览器打开
                   //OpenDefaultBrowserUrl(url);
                }
            }
            catch
            {
                isOpen = false;
            }

            return isOpen;
      }

      /// <summary>
      /// 调用IE浏览器
      /// </summary>
      /// <param name="url"></param>
      public static void OpenIe(string url)
      {
            // 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);
                  }                  
                }
            }
            catch (Exception exception)
            {               
            }
      }

      /// <summary>
      /// 调用系统默认浏览器(用户自己设置了默认浏览器)
      /// </summary>
      /// <param name="url"></param>
      public static bool OpenDefaultBrowserUrl(string url)
      {
            bool isOpen = true;
            try
            {
                //从注册表中读取默认浏览器可执行文件路径
                RegistryKey key = Registry.ClassesRoot.OpenSubKey(@"http\shell\open\command\");
                if (key != null)
                {
                  string browserPath = string.Empty;
                  string[] splitArr = new string[] { };
                  string browser = key.GetValue("").ToString();

                  //browser是默认浏览器,不同的浏览器后面的参数不一样。例如:"D:\Program Files (x86)\Google\chrome.exe" -- "%1"
                  var lastIndex = browser.IndexOf(".exe", StringComparison.Ordinal);
                  if (lastIndex == -1)
                        lastIndex = browser.IndexOf(".EXE", StringComparison.Ordinal);

                  if (lastIndex != -1)
                  {
                        splitArr = browser.Split("\"");
                  }
                  //大于0 说明 按照 " 切割到数据
                  if (splitArr.Length > 0)
                  {
                        browserPath = splitArr;
                  }
                  else if (splitArr.Length == 0 && lastIndex != -1) //说明有浏览器,列如:D:\QQBrowser\QQBrowser.exe
                  {
                        browserPath = browser;
                  }
                  //打开浏览器
                  var result = Process.Start(browserPath, url);

                  //调用IE
                  //if (result == null)
                  //    OpenIe(url);
                }
                else
                {
                  isOpen = false;
                   //OpenIe(url);
                }
                  
            }
            catch
            {
                isOpen = false;
            }
            return isOpen;
      }
    } 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: C# 调用浏览器打开网址