c# process file-association

c# - Abrir archivo con la aplicación asociada



process file-association (2)

Este es un hilo viejo, pero por si acaso alguien lo encuentra como lo hice yo. pi.FileName necesita establecerse en el nombre del archivo (y posiblemente en la ruta completa al archivo) del ejecutable que desea usar para abrir su archivo. El siguiente código funciona para que abra un archivo de video con VLC.

var path = files[currentIndex].fileName; var pi = new ProcessStartInfo(path) { Arguments = Path.GetFileName(path), UseShellExecute = true, WorkingDirectory = Path.GetDirectoryName(path), FileName = "C://Program Files (x86)//VideoLAN//VLC//vlc.exe", Verb = "OPEN" }; Process.Start(pi)

La respuesta de Tigran funciona, pero usará la aplicación predeterminada de Windows para abrir su archivo, por lo que usar ProcessStartInfo puede ser útil si desea abrir el archivo con una aplicación que no es la predeterminada.

Quiero pedir ayuda para abrir un archivo desde la aplicación c # con la aplicación asociada. Intenté esto:

ProcessStartInfo pi = new ProcessStartInfo(file); pi.Arguments = Path.GetFileName(file); pi.UseShellExecute = true; pi.WorkingDirectory = Path.GetDirectoryName(file); pi.FileName = file; pi.Verb = "OPEN"; Process.Start(pi);

o esto:

Process.Start(file);

donde el file cadena en ambos ejemplos representa la ruta completa al archivo que intenta abrir. Ahora, todo está funcionando bien, excepto las imágenes (jpg) con la aplicación ACDSee . Las asociaciones de Irfanview funcionan bien, los documentos de la oficina de MS también. Después de intentar abrir la imagen jpg asociada con acdsee, solo ejecuta el acdsee en el área de notificación y no abre el archivo.

Descubrí que en el registro CLASSES_ROOT para imágenes * .jpg, hay un valor ACDSee.JPG como aplicación asociada, y debajo de esta tecla hay en el shell-> Abrir-> Comando una ruta:

"C:/Program Files/ACD Systems/ACDSee/ACDSee.exe" /dde

y creo que este extraño /dde es la razón, por qué no puedo abrir el archivo. Me di cuenta de que en la misma clave de reg shell-> Open hay una entrada de clave DDEExec con valor [open("%1")]

Para la vista Irfan u otra aplicación marcada no hay un ddeexec, solo el comando normal como

"C:/Program Files (x86)/IrfanView/i_view32.exe" "%1"

que se puede ejecutar desde la línea de comandos después de cambiar el% 1 por el nombre del archivo , pero no pude ejecutar el comando desde la entrada acdsee en la línea de comando :(

Entonces mi pregunta es, ¿cómo puedo configurar el objeto ProcessStartInfo para asegurarme de que ejecutará todos los archivos como lo haría en el explorador haciendo doble clic, los estándares y estos DDEExec ? ¿Hay algo más como DDEExec que DDEExec tener en cuenta? gracias y lo siento por mi EN


Solo escribe

System.Diagnostics.Process.Start(@"file path");

ejemplo

System.Diagnostics.Process.Start(@"C:/foo.jpg"); System.Diagnostics.Process.Start(@"C:/foo.doc"); System.Diagnostics.Process.Start(@"C:/foo.dxf"); ...

Y shell ejecutará el programa asociado leyéndolo desde el registro, como suele hacer doble clic.