SUMMARY
This article demonstrates how to start the default Internet
browser by using managed extensions for Visual C++.
back to the top
Requirements
The following list outlines the recommended hardware, software,
network infrastructure, and service packs that are required:
- Microsoft Visual Studio .NET or Microsoft Visual Studio 2005
back to the top
Specify the URL, FTP, or File to Open
You can specify a URL, a file, or an FTP address. All three of
these assignments are valid:
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";
back to the top
Use the Process Class Start Method to Start the Browser
The
Process class contains a static
Start method. Because this is a static method, you can call
Start without having an instance of a
Process class.
System::Diagnostics::Process::Start(target);
back to the top
Provide Exception Handling
Because you take advantage of the default
UseShellExecute property when you call the
Start method, you do not have to explicitly query the registry to
determine which browser is the default. However, if you use this approach on a
computer that does not have a browser installed, an exception occurs. This
exception must be caught so that the appropriate action can be taken. This
example explicitly traps for an error that is generated when the necessary
registry key is not found and indicates that no browser is installed. In
addition, a general exception handler is provided for other errors that may
occur. The
try...catch block is demonstrated in the complete code
sample.
back to the top
Complete Code Sample
#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;
}
back to the top
Troubleshooting
This code is highly dependent on the application-file type
associations in the
HKEY_CLASSES_ROOT hive of the registry. This can lead to unexpected results and
exceptions if the registry is damaged. In addition, file types and extensions
may be associated with applications other than the browser. For example, HTM or
HTML files may be associated with Web development software instead of the
browser.
back to the top