Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se muestra cómo iniciar el explorador de Internet predeterminado mediante extensiones administradas para Visual C++.
Versión original del producto: Visual C++
Número de KB original: 307382
Nota:
- Para obtener una versión .NET de Microsoft Visual C# de este artículo, vea Cómo iniciar el explorador de Internet predeterminado mediante programación mediante Visual C#.
- En este artículo se hace referencia a los espacios de nombres de la biblioteca de clases
System.Diagnostics.Process
de .NET Framework ySystem.Windows.Forms
.
Especificar la dirección URL, FTP o el archivo que se va a abrir
Puede especificar un localizador uniforme de recursos (URL), un archivo o una dirección del Protocolo de transferencia de archivos (FTP). Las tres asignaciones son válidas:
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";
Use el método Process class Start para iniciar el explorador.
La Process
clase contiene un método estático Start
. Dado que es un método estático, puede llamar a Start
sin tener una instancia de una Process
clase.
System::Diagnostics::Process::Start(target);
Proporcionar control de excepciones
Dado que aprovecha la propiedad predeterminada UseShellExecute
al llamar al Start
método , no es necesario consultar explícitamente el Registro para determinar qué explorador es el predeterminado. Sin embargo, si usa este enfoque en un equipo que no tiene instalado un explorador, se produce una excepción. Esta excepción debe detectarse para que se pueda realizar la acción adecuada. En este ejemplo se captura explícitamente un error que se genera cuando no se encuentra la clave del Registro necesaria e indica que no hay ningún explorador instalado. Además, se proporciona un controlador de excepciones general para otros errores que pueden producirse. El try...catch
bloque se muestra en el ejemplo de código completo.
Ejemplo de código completo
#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;
}
Solución de problemas
Este código depende en gran medida de las asociaciones de tipo de archivo de aplicación en el subárbol HKEY_CLASSES_ROOT del Registro. Lo que puede dar lugar a resultados inesperados y excepciones si el registro está dañado. Además, los tipos de archivo y las extensiones pueden estar asociados a aplicaciones distintas del explorador. Por ejemplo, los archivos HTM o hyper text markup language (HTML) pueden estar asociados con el software de desarrollo web en lugar del explorador.