Как я открываю веб-браузер из Программы.NET? Процесс. Запустите (), не работает?

У меня есть URL, и я хочу запустить его в браузере по умолчанию. Я попробовал два метода:

Process.Start("http://stackoverflow.com");

... и тот детализировал в этом другом использовании вопроса ShellExecute.

В обоих случаях я получаю ошибку: Windows не может найти 'http://stackoverflow.com'. Удостоверьтесь, что Вы ввели имя правильно, и затем попробуйте еще раз.

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

Между прочим: ОС = Vista и.NET = 3.5

Править:

В соответствии с этой статьей MS KB, начиная с Процесса. Запустите устанавливает UseShellExecute по умолчанию, он должен запустить браузер по умолчанию.

Править:

Вот то, что действительно работает:

System.Diagnostics.Process.Start(@"C:\Program Files\Internet Explorer\IExplore.exe", "http://stackoverflow.com");

К сожалению, это действительно не запускает браузер по умолчанию, и он также не работает, если IE не установлен в "нормальном" месте. Я не уверен, что сделать здесь.

Больше информации:

Хорошо, таким образом, ошибка, которую я получаю, является кодом ошибки-2147467259. Смотря на Google для этого, кажется, что это не является очень описательным. Это могла бы быть ошибка ассоциации файлов или что-то.

График утолщает:

Таким образом, я проверил ключ реестра, это, как предполагается, имеет мою ассоциацию файлов для http:

KEY_CLASSES_ROOT\http\shell\open\command\default

Вот значение:

"C:\Program Files\Mozilla Firefox\firefox.exe" -requestPending -osint -url "%1"

Это имеет смысл. Я на самом деле скопировал эту строку в командную строку и заменил %1 http://stackoverflow.com, и она работала и открыла Firefox. Я просто не добираюсь почему Процесс. Запуск не связывает URL с этой командой...

14
задан Community 23 May 2017 в 12:16
поделиться

4 ответа

Итак, таинственным образом он начал работать правильно, ничего не меняя. Я не могу объяснить это. Однако, тем временем, я написал другой метод поиска и запуска браузера по умолчанию. Это немного халтурно, но гораздо лучше, чем просто загрузка IE по умолчанию:

bool success = false;
RegistryKey httpKey = Registry.ClassesRoot.OpenSubKey(@"http\shell\open\command");
if (httpKey != null && httpKey.GetValue(string.Empty) != null)
{
    string cmd = httpKey.GetValue(string.Empty) as string;
    if (cmd != null)
    {
        try
        {
            if (cmd.Length > 0)
            {
                string[] splitStr;
                string fileName;
                string args;
                if (cmd.Substring(0,1) == "\"")
                {
                    splitStr = cmd.Split(new string[] { "\" " }, StringSplitOptions.None);
                    fileName = splitStr[0] + "\"";
                    args = cmd.Substring(splitStr[0].Length + 2);
                }
                else
                {
                    splitStr = cmd.Split(new string[] { " " }, StringSplitOptions.None);
                    fileName = splitStr[0];
                    args = cmd.Substring(splitStr[0].Length + 1);
                }
                System.Diagnostics.Process.Start(fileName, args.Replace("%1","http://stackoverflow.com"));
                success = true;
            }
        }
        catch (Exception)
        {
            success = false;
        }
    }
    httpKey.Close();
}
0
ответ дан 1 December 2019 в 14:43
поделиться

Попробуйте

Process.Start("IExplore.exe http://www.stackoverflow.com");

Это запустит Internet Explorer и URL. Process.Start не обнаруживает приложения/браузеры automaticall.y

1
ответ дан 1 December 2019 в 14:43
поделиться

Это работает для меня:

Process proc = new Process ();
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.FileName = "http://stackoverflow.com";
proc.Start ();

Не забудьте UseShellExecute , если вы хотите использовать автоматическое распознавание типа команды (в данном случае http / browser).

Изменить: это работает, если вы Win + R URL-адрес?

10
ответ дан 1 December 2019 в 14:43
поделиться

Это серьезная проблема, которую я заметил, когда Firefox был браузером по умолчанию.

Если мы используем System.Windows.Forms.Help.ShowHelp (null, « http://microsoft.com »), такое сообщение об ошибке можно обойти в Windows. Однако Help.ShowHelp не работает должным образом в Mono / openSUSE.

1
ответ дан 1 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

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