Cómo utilizar un nombre de archivo para iniciar una aplicación mediante Visual C#

Para una versión de Microsoft Visual Basic .NET de este artículo, consulte 305201 .

Para una versión de Microsoft Visual C++ .NET de este artículo, consulte 307387 .


Este artículo hace referencia al siguiente espacio de nombres de biblioteca de clases de Microsoft.NET Framework:
  • System.Diagnostics

EN ESTA TAREA

Resumen

En este artículo paso a paso se muestra cómo iniciar la aplicación que está asociada a un tipo de archivo o la extensión de documento dado sin necesidad de conocer el nombre o la ubicación de la aplicación asociada. Por ejemplo, puede iniciar Arcade.bmp con la aplicación que está asociada con la extensión de archivo .bmp, que es MSPaint.exe en la mayoría de los casos.

Requisitos

  • Microsoft .NET C#
  • Microsoft Visual C# 2005

Incluir espacios de nombres

El espacio de nombres debe aparecer antes de la declaración de clase, como sigue:

using System.Diagnostics;

Especificar la información ProcessStartInfo

Puede utilizar la estructura ProcessStartInfo de la clase de.NET Framework proceso para especificar opciones al iniciar un proceso. En este artículo se describe cómo utilizar la opción de nombre de archivo. Otro miembro, UseShellExecute, especifica que el proceso se inicie a partir de un archivo o la extensión de tipo de archivo en lugar del nombre del archivo ejecutable (.exe). Esta propiedad se establece en true de forma predeterminada. Se establece explícitamente en el código con fines ilustrativos.

string sysFolder = Environment.GetFolderPath(Environment.SpecialFolder.System);
ProcessStartInfo pInfo = new ProcessStartInfo();
pInfo.FileName = sysFolder + @"\eula.txt";
pInfo.UseShellExecute = true;

Iniciar la aplicación

Este ejemplo abre un archivo denominado Eula.txt. El archivo se abre con la aplicación que está asociada con la extensión de archivo .txt, que normalmente es Notepad.exe. Puede sustituir cualquier nombre de archivo o un tipo que tenga asociada una aplicación determinada.

Process p  = Process.Start(pInfo);

Acceso directo para iniciar la aplicación

Dado que UseShellExecute es verdadero de forma predeterminada, no tienen que utilice ProcessStartInfo al iniciar un proceso. Puede iniciar la aplicación asociada con una sola línea de código, como sigue:

Process p  = Process.Start(@"C:\winnt\system32\eula.txt");

Ejemplo de código completo

using System.Diagnostics;
//Get path of the system folder.
string sysFolder =
Environment.GetFolderPath(Environment.SpecialFolder.System);
//Create a new ProcessStartInfo structure.
ProcessStartInfo pInfo = new ProcessStartInfo();
//Set the file name member.
pInfo.FileName = sysFolder + @"\eula.txt";
//UseShellExecute is true by default. It is set here for illustration.
pInfo.UseShellExecute = true;
Process p = Process.Start(pInfo);

Solución de problemas

Es posible que un equipo concreto no tenga ninguna aplicación asociada instalada o que las asociaciones del registro no sean correctas. Es aconsejable envolver este código en un bloque try... catch para que se advierta a la aplicación en caso de error.

Propiedades

Id. de artículo: 306222 - Última revisión: 22 ene. 2017 - Revisión: 2

Comentarios