Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как запустить браузер Интернета по умолчанию с помощью управляемых расширений для Visual C++.
Исходная версия продукта: Visual C++
Исходный номер базы знаний: 307382
Примечание.
- Сведения о версии .NET для Microsoft Visual C# см. в статье "Как запустить браузер Интернета по умолчанию программным способом с помощью Visual C#".
- В этой статье рассматриваются пространства
System.Diagnostics.Process
имен библиотеки классов платформа .NET Framework иSystem.Windows.Forms
.
Укажите URL-адрес, FTP или файл для открытия
Вы можете указать универсальный указатель ресурсов (URL-адрес), файл или FTP-адрес. Все три из этих назначений являются допустимыми:
System::String * target= "http://www.microsoft.com";
System::String * target = "ftp://ftp.microsoft.com";
System::String * target = "C:\\Program Files\\Microsoft Visual Studio\\INSTALL.HTM";
Запуск браузера с помощью метода Start класса Process
Класс Process
содержит статический Start
метод. Так как это статический метод, можно вызывать Start
без экземпляра Process
класса.
System::Diagnostics::Process::Start(target);
Предоставление обработки исключений
Так как вы используете преимущество свойства по умолчанию при вызове Start
метода, вам не нужно явно запрашивать реестр, чтобы определить, какой браузер используется по умолчаниюUseShellExecute
. Однако если этот подход используется на компьютере, на котором не установлен браузер, возникает исключение. Это исключение необходимо поймать, чтобы можно было предпринять соответствующее действие. Этот пример явным образом перехватывает ошибку, созданную при отсутствии необходимого раздела реестра, и указывает, что браузер не установлен. Кроме того, общий обработчик исключений предоставляется для других ошибок, которые могут возникнуть. Блок try...catch
демонстрируется в полном примере кода.
Полный пример кода
#using <mscorlib.dll>
#using <system.dll>
#using <System.Windows.Forms.dll>
int main()
{
//Use no more than one assignment when you test this code.
//System::String * target= "http://www.microsoft.com";
//System::String * target = "ftp://ftp.microsoft.com";
System::String * target = "C:\\Program Files\\Microsoft Visual Studio\\INSTALL.HTM";
try
{
System::Diagnostics::Process::Start(target);
}
catch (System::ComponentModel::Win32Exception * noBrowser)
{
if (noBrowser->ErrorCode==-2147467259)
System::Windows::Forms::MessageBox::Show(noBrowser->Message);
}
catch (System::Exception * other)
{
System::Windows::Forms::MessageBox::Show(other->Message);
}
return 0;
}
Устранение неполадок
Этот код сильно зависит от сопоставлений типов приложений в HKEY_CLASSES_ROOT кусте реестра. Что может привести к непредвиденным результатам и исключениям, если реестр поврежден. Кроме того, типы файлов и расширения могут быть связаны с приложениями, отличными от браузера. Например, файлы HTM или Hyper Text Markup Language (HTML) могут быть связаны с программным обеспечением веб-разработки вместо браузера.