Process.Start ( "IExplore.exe"); <- Это надежно? - PullRequest
6 голосов
/ 13 мая 2010

Process.Start ( "IExplore.exe");

Всегда ли это работает на каждой машине? Если нет, то как это сделать правильно?

... РЕДАКТИРОВАТЬ: .................................

Проблема с Process.Start ("http://www.example.com/");) заключается в том, что мы должны нацеливаться на локальный html-файл, причем некоторая строка запроса указывает, какую страницу загружать в html-фрейме. Наш URL выглядит следующим образом:

G:\PathToHelpFolder\index.html#search?page=1.html

Если вы передадите этот путь в Process.Start, будет сгенерирована ошибка: «не удается найти файл». Это вызвано строкой запроса в конце. (#Search? Страница = 1.html)

Итак, нам нужно запустить проводник (или браузер по умолчанию) с filepath в качестве аргумента командной строки. Мы нашли метод выше в документации MSDN. (Process.Start ("IExplore.exe");) Наш единственный вопрос - достаточно ли надежен этот метод для развертывания в коммерческом приложении. Моно не проблема, нацелены только системы Windows.

... РЕДАКТИРОВАТЬ: Наше решение ......

Нашим решением было получить браузер по умолчанию из реестра и запустить его с именем файла в качестве аргумента. (как указано в: Запуск браузера по умолчанию с html из файла, затем переход к определенной привязке )

Ответы [ 7 ]

22 голосов
/ 13 мая 2010

Если ваша цель - открыть браузер, чтобы перейти на определенную страницу, лучше использовать только URL страницы:

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

Таким образом, будет использоваться браузер пользователя по умолчанию. (Я, например, был бы раздражен тем, что вынужден использовать IE.)

5 голосов
/ 13 мая 2010

Мне однажды понадобилось имя браузера по умолчанию (без открытия) для глупого приложения, которое я построил, я нашел здесь замечательный учебник: http://ryanfarley.com/blog/archive/2004/05/16/649.aspx

3 голосов
/ 13 мая 2010

Это должно работать на каждой машине, на которой есть исполняемый файл IExplore.exe в месте, которое Process.Start можно найти с помощью переменной среды PATH.

Process.Start документация

Запуск процесса путем указания его имени файла аналогичен вводу информации в диалоговом окне «Выполнить» в меню «Пуск» Windows. Следовательно, имя файла не обязательно должно представлять исполняемый файл. Это может быть файл любого типа, для которого расширение было связано с приложением, установленным в системе. Например, имя файла может иметь расширение .txt, если у вас есть связанные текстовые файлы с редактором, таким как Блокнот, или оно может иметь .doc, если у вас есть файлы .doc, связанные с инструментом обработки текста, таким как Microsoft Word. Аналогично, точно так же, как диалоговое окно «Выполнить» может принимать имя исполняемого файла с расширением .exe или без него, расширение .exe является необязательным в параметре fileName. Например, вы можете установить для параметра fileName значение «Notepad.exe» или «Notepad».

Если кто-то переименовал или удалил IExplore.exe, или он находится в местоположении, которое не входит в переменную окружения PATH, он не будет работать.

Однако, если ваша цель - открыть браузер, я бы пошел с передачей URL, как предлагали другие.

2 голосов
/ 13 мая 2010

Вы, вероятно, должны непосредственно запускать HTML-файл, чтобы уважать ассоциацию пользователя. Как пользователь, нет ничего более раздражающего, чем наличие какого-либо пакета, заставляющего меня использовать IE, когда я четко установил свои предпочтения для использования другого браузера.

2 голосов
/ 13 мая 2010

Вы можете просто добавить туда URL. (Process.Start("<a href="http://somewebsite.com" rel="nofollow noreferrer">http://somewebsite.com</a>");), который всегда будет работать и использовать стандартный браузер.

0 голосов
/ 14 мая 2010

Попробуйте это:

Process.Start("file:///g:/PathToHelpFolder/index.html#search?page=1.html");

0 голосов
/ 13 мая 2010

Вы можете создать простой HTML-файл, перенаправляющий нужную ссылку, а затем запустить процесс, указывающий на этот более простой URL-адрес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...