Відкрийте URL-адресу з Windows Forms


78

Я намагаюся надати посилання на веб-сайт моєї компанії з форми Windows. Я хочу мати хорошу поведінку та запускати, використовуючи улюблений браузер користувача.

Який найкращий спосіб відкрити URL-адресу в браузері користувача за замовчуванням із програми Windows Forms?


2
Можливо, вони додадуть API до стандартної бібліотеки, я чую, що ця веб-річ буде великою.
Colonel Panic

Відповіді:


134

Ця стаття проведе вас через це.

Коротка відповідь:

ProcessStartInfo sInfo = new ProcessStartInfo("http://mysite.com/");  
Process.Start(sInfo);

2
Чому я отримую виправлення Win32Exception: "Додаток не знайдено", коли я спробую це? Я на Win7 64bit. Дякую
Томмі Б.

Посилання на статтю порушено, і кошеня страждає:, (
Windgate

35
using System.Diagnostics;

Process.Start("http://www.google.com/");

Цей підхід спрацював для мене, але я міг би пропустити щось важливе.


12

Ось найкраще з обох світів:

Dim sInfo As New ProcessStartInfo("http://www.mysite.com")

Try
     Process.Start(sInfo)
Catch ex As Exception
     Process.Start("iexplore.exe", sInfo.FileName)
End Try

Я виявив, що відповідь, надана Blorgbeard, не вдасться, коли настільна програма запускається на пристрої Windows 8. На думку Камілло, вам слід спробувати відкрити його за допомогою програми браузера за замовчуванням, але якщо програма веб-переглядача не призначена, буде викинуто необроблене виняток.

Я публікую це як відповідь, оскільки він обробляє виняток, намагаючись відкрити посилання у браузері за замовчуванням.


6

Мені подобається підхід, описаний тут . Він враховує можливі винятки та затримки при запуску браузера.

Для кращої практики переконайтеся, що ви не просто ігноруєте виняток, а вловлюєте його та виконуєте відповідну дію (наприклад, повідомте користувача, що відкриття браузера для переходу до URL-адреси не вдалося).


2
Правда, і це слід завжди враховувати. Їхній метод просто ковтання винятків змушує мене скупитися. Можливо, ви зможете аргументувати це в цьому конкретному випадку, але у мене все одно ніколи не буде порожнього блоку "catch". Надто просто повністю замаскувати проблему таким чином.
Адріан Кларк,

ти маєш рацію. Я насправді не думав про можливий виняток (а повинен був), поки не побачив пост.
Сумрак

1

Для тих, хто отримує "Win32Exception: Система не може знайти вказаний файл"

Це повинно зробити роботу:

ProcessStartInfo psInfo = new ProcessStartInfo
{
   FileName = "https://www.google.com",
   UseShellExecute = true
};
Process.Start(psInfo);

UseShellExecute описано далі тут

Для мене проблема була пов’язана із середовищем виконання .NET, як описано тут


-3

Вищевказаний підхід ідеальний, я хотів би рекомендувати цей підхід там, де ви можете передавати свої параметри.

Process mypr;
mypr = Process.Start("iexplore.exe", "pass the name of website");

1
Це має бути коментар, а не відповідь.
Остін Хенлі,

Будь ласка, використовуйте належний стиль письма та утримайтеся від написання тут "мовою чату" ...
Spontifixus

1
Мені було цікаво, чому ви вважаєте, що такий підхід вищий? Мені здається, що це не стосується того, що було спочатку призначене, яке було відкрите в улюбленому браузером користувача. Цей метод забезпечує виконуваний браузер, тому він завжди відкривається в IE, навіть якщо користувач вказав Chrome або Firefox як бажаний веб-браузер.
Адріан Кларк,

4
-1 через Internet Explorer. Я ненавиджу, коли якась німа програма відкриває Internet Explorer, змушує мене журитися, просто чекаючи її запуску, щоб я міг закрити цю прокляту штуку і відкрити URL-адресу у власне веб-браузері . Такі речі є миттєвим приводом думати, що додаток закодовано дванадцятирічними дітьми.
Каміло Мартін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.