2010-01-14 14 views
5

Estoy terminando de codificar una solución de almacenamiento de documentos y me he encontrado con el siguiente problema. Dentro de la interfaz de usuario, el usuario puede pulsar un botón para abrir un archivo:Alternativa a Process.Start()

try 
{ 
    Process.Start(file); 
} 
catch (Exception ex) 
{ 
    //Error handling code 
} 

Mi problema es que si el usuario no tiene una aplicación asociada con el archivo escriba una excepción componentmodel se lanza con un mensaje a tal efecto.

Lo que prefiero hacer es abrir el cuadro de diálogo "Abrir con" en esa situación, ¿hay alguna llamada al método que me falte?

Respuesta

5

Puede consultar el registro para ver si tiene una aplicación asociada con ese tipo de archivo antes de llamar a Process.Start. Alternativamente, puede capturar la excepción de componentmodel y abrir la apertura con diálogo desde allí.

+0

Use el código de http://stackoverflow.com/questions/4638/how-do-you-create-your-own-moniker -url-protocol-on-windows-systems para ver ejemplos de cómo comprobar que tienes un protocolo URL instalado –

1

No, no hay. Creo que tu enfoque actual es el mejor. Simplemente intente ejecutar el programa y luego, en caso de una excepción, debido a que el archivo no tiene asociación, abra un diálogo que le permita seleccionar un archivo para ejecutar el programa.

1
Process.Start("explorer.exe",file) 

valdría la pena intentarlo también.

resuelve el problema que tuve de abrir direcciones URL a través de XP, Vista y 7