Вопрос по c# – Как я могу запустить URL в браузере пользователя по умолчанию из моего приложения?

30

Как я могу иметь кнопку в своем настольном приложении, которая заставляет браузер пользователя по умолчанию запускать и отображать URL, предоставленный логикой приложения.

Ваш Ответ

2   ответа
19

ях, кроме крайне нишевых. Однако для полноты изложения я упомяну, что некоторое время назад мы столкнулись с таким нишевым случаем: если вы пытаетесь открыть файл & quot; \ & quot; url (в нашем случае, чтобы показать локально установленную копию нашей веб-справки), при запуске из оболочки параметры в url были выброшены.

Наше довольно хакерское решение, которое я не рекомендую, если вы не столкнетесь с проблемой с «правильным». Решение, выглядело примерно так:

В обработчике кликов для кнопки:

string browserPath = GetBrowserPath();
if (browserPath == string.Empty)
    browserPath = "iexplore";
Process process = new Process();
process.StartInfo = new ProcessStartInfo(browserPath);
process.StartInfo.Arguments = "\"" + [whatever url you're trying to open] + "\"";
process.Start();

Уродливая функция, которую вы не должны использовать, если Process.Start ([ваш URL]) не будет делать то, что вы ожидаете, он собирается:

private static string GetBrowserPath()
{
    string browser = string.Empty;
    RegistryKey key = null;

    try
    {
        // try location of default browser path in XP
        key = Registry.ClassesRoot.OpenSubKey(@"HTTP\shell\open\command", false);

        // try location of default browser path in Vista
        if (key == null)
        {
            key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http", false); ;
        }

        if (key != null)
        {
            //trim off quotes
            browser = key.GetValue(null).ToString().ToLower().Replace("\"", "");
            if (!browser.EndsWith("exe"))
            {
                //get rid of everything after the ".exe"
                browser = browser.Substring(0, browser.LastIndexOf(".exe") + 4);
            }

            key.Close();
        }
    }
    catch
    {
        return string.Empty;
    }

    return browser;
}
Этот ответ может использовать обновление для включения Win8 и Win10. (Если кто-то в конечном итоге реализует его, отредактируйте этот ответ, чтобы включить его!)
Это очень хорошая кодировка
59
 Process.Start("http://www.google.com");

Похожие вопросы