Альтернатива Process.Start () - PullRequest
5 голосов
/ 14 января 2010

Я только что завершил кодирование решения для хранения документов и столкнулся со следующей проблемой. В пользовательском интерфейсе пользователь может нажать кнопку, чтобы открыть файл:

try
{
    Process.Start(file);
}
catch (Exception ex)
{
    //Error handling code
}

Моя проблема заключается в том, что если у пользователя нет приложения, связанного с типом файла, возникает исключение компонента модели с сообщением об этом.

Что бы я предпочел сделать - это всплывающее диалоговое окно «Открыть с помощью» в этой ситуации, есть ли вызов метода, который мне не хватает?

Ответы [ 4 ]

5 голосов
/ 14 января 2010

Вы можете проверить реестр, чтобы увидеть, есть ли у вас приложение, связанное с этим типом файла, прежде чем вызывать Process.Start. Кроме того, вы можете перехватить исключение componentmodel и открыть оттуда диалог открытия с помощью.

3 голосов
/ 14 января 2010

См. Эту статью по использованию диалога «Открыть с помощью»

http://www.codeproject.com/KB/shell/openwith.aspx

Я бы поместил вызов Process.Start в оператор try, а затем показал бы «Open With» в подвохе.

1 голос
/ 01 ноября 2012
Process.Start("explorer.exe",file) 

тоже стоит попробовать.

Решает проблему с открытием URL в XP, Vista и 7

1 голос
/ 14 января 2010

нет там нет. Я думаю, что ваш нынешний подход является лучшим. Просто попробуйте запустить программу, а затем в случае возникновения исключительной ситуации, поскольку файл не имеет ассоциации, откройте диалоговое окно, позволяющее выбрать файл для запуска программы.

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