Поделиться через


Запуск браузера Интернета по умолчанию программным способом с помощью Visual C++

В этой статье показано, как запустить браузер Интернета по умолчанию с помощью управляемых расширений для Visual C++.

Исходная версия продукта: Visual C++
Исходный номер базы знаний: 307382

Примечание.

Укажите 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) могут быть связаны с программным обеспечением веб-разработки вместо браузера.