it-swarm.com.ru

Откройте HTML-файл с помощью веб-браузера по умолчанию

Я использую это, чтобы получить путь и исполняемый файл веб-браузера по умолчанию:

public static string DefaultWebBrowser
        {
            get
            {

                string path = @"\http\Shell\open\command";

                using (RegistryKey reg = Registry.ClassesRoot.OpenSubKey(path))
                {
                    if (reg != null)
                    {
                        string webBrowserPath = reg.GetValue(String.Empty) as string;

                        if (!String.IsNullOrEmpty(webBrowserPath))
                        {
                            if (webBrowserPath.First() == '"')
                            {
                                return webBrowserPath.Split('"')[1];
                            }

                            return webBrowserPath.Split(' ')[0];
                        }
                    }

                    return null;
                }
            }
        }

А также:

 protected static bool Run(string FileName, string Args)
        {
            try
            {
                Process proc = new Process();

                processInfo.FileName = FileName;
                 proc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;

                if(Args != null) proc.StartInfo.Arguments = Args;

                proc.Start();

                return true;
            }
            catch (Exception) { }

            return false;
        }

Затем я вызываю веб-браузер: Run(DefaultWebBrowser, "foo.html")

Вопрос в том, что вышеуказанная функция вызывает Firefox и IE (два веб-браузера, установленных на моем компьютере) вместо Internet Explorer, веб-браузера по умолчанию. Я понятия не имею, как это исправить.

ПРАВКА

Я скачал и установил Google Chrome, установил его в качестве веб-браузера по умолчанию, но, как ни странно, вышеописанная ошибка не происходит с ним.

12
Jack

Вы можете заменить весь этот код на

System.Diagnostics.Process.Start(pathToHtmlFile);

Это автоматически запустит ваш браузер по умолчанию, или, скорее, поиск обработчика по умолчанию для файлов .htm или .html и использовать его.

Теперь, когда Firefox установлен по умолчанию, это может иногда вызывать странные исключения (я думаю, что Firefox запускается впервые), так что вы можете использовать try/catch для этого.

29
Darko Z

Для тех, у кого нет html ассоциации по умолчанию с браузером, используйте

System.Diagnostics.Process.Start("Chrome", Uri.EscapeDataString(pathToHtmlFile))

1
Richard Matsen

Я использую код, где я сначала ищу exe-файлы . Например, если существует chrome.exe (по умолчанию), иначе, если существует firefox.exe или launcher.exe (для оперы) и т. Д ... если ничего не существует, попробуйте запустить iexplore.exe с параметром pathToHtmlFile. Это моё решение, где я использую внешний конфиг, где установлен мой браузер, не имеет значения, какой установлен по умолчанию в ОС.

0
Dávid Miškovič