この記事では、Visual C++ 用のマネージド拡張機能を使用して、既定のインターネット ブラウザーを起動する方法について説明します。
元の製品バージョン: Visual C++
元の KB 番号: 307382
Note
- この記事の Microsoft Visual C# .NET バージョンについては、「 Visual C# を使用して既定のインターネット ブラウザーをプログラムで起動する方法」を参照してください。
- この記事では、.NET Framework クラス ライブラリの名前空間
System.Diagnostics.ProcessおよびSystem.Windows.Formsについて説明します。
開く URL、FTP、またはファイルを指定する
UNIFORM Resource Locator (URL)、ファイル、またはファイル転送プロトコル (FTP) アドレスを指定できます。 次の 3 つの割り当てはすべて有効です。
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";
Process クラスの Start メソッドを使用してブラウザーを起動する
Process クラスには、静的なStart メソッドが含まれています。 静的メソッドであるため、Process クラスのインスタンスがなくてもStartを呼び出すことができます。
System::Diagnostics::Process::Start(target);
例外処理を提供する
既定のUseShellExecute プロパティを利用するためStart メソッドを呼び出すときに、レジストリに対して明示的にクエリを実行して、どのブラウザーが既定であるかを判断する必要はありません。 ただし、ブラウザーがインストールされていないコンピューターでこの方法を使用すると、例外が発生します。 適切なアクションを実行できるように、この例外をキャッチする必要があります。 この例では、必要なレジストリ キーが見つからないときに生成されるエラーを明示的にトラップし、ブラウザーがインストールされていないことを示します。 さらに、発生する可能性のあるその他のエラーに対して、一般的な例外ハンドラーが提供されます。 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) ファイルは、ブラウザーではなく Web 開発ソフトウェアに関連付けられている場合があります。