Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Abrir una aplicación desde sus archivo generados (https://www.clubdelphi.com/foros/showthread.php?t=92388)

elcigarra 18-10-2017 01:57:56

Abrir una aplicación desde sus archivo generados
 
Amigos, tengo una aplicación que genera documentos de salida con información (que se guardan con una extensión propia). Estos archivos pueden abrirse desde la aplicación con un opendialog común y corriente, pero que al cargarse realiza varios procesos específicos cargando distintas variables y stringgrids con la información que tiene el archivo.
La pregunta es como puedo hacer para abrir la aplicación desde este archivo (teniendo ya windows asignada esta extension). Es decir, yo hago doble click sobre el archivo y se abre la aplicación pero obviamente no hace nada con el archivo.

dec 18-10-2017 08:45:59

Hola,

Cuando tienes asociada una extensión a tu programa, en efecto, al hacer doble clic, por ejemplo, en el archivo con la extensión asociada, se abrirá tu programa. Siempre que esto ocurra tu programa recibirá como argumento la ruta del archivo en cuestión, y, a partir de ahí, es cuestión tuya qué hacer con dicha ruta: leer el archivo, procesar su contenido, etc. Puedes echar un vistazo a la función ParamStr, entre otras.

roman 18-10-2017 17:52:39

Cita:

Empezado por dec (Mensaje 521788)
Cuando tienes asociada una extensión a tu programa, en efecto, al hacer doble clic, por ejemplo, en el archivo con la extensión asociada, se abrirá tu programa. Siempre que esto ocurra tu programa recibirá como argumento la ruta del archivo en cuestión, y, a partir de ahí, es cuestión tuya qué hacer con dicha ruta: leer el archivo, procesar su contenido, etc. Puedes echar un vistazo a la función ParamStr, entre otras.

Hace mucho tiempo que no programo para Windows, pero creo recordar que, además de lo que comentas, hay que considerar el caso en que se haga doble clic sobre un grupo de archivos, porque creo que el comportamiento por defecto es abrir tantas instancias de tu aplicación como archivos haya en el grupo, de manera que la propia aplicación debe estar preparada para manejar una sóla instancia.

LineComment Saludos

dec 19-10-2017 10:32:58

Hola a todos,

Cita:

Empezado por roman (Mensaje 521802)
Hace mucho tiempo que no programo para Windows, pero creo recordar que, además de lo que comentas, hay que considerar el caso en que se haga doble clic sobre un grupo de archivos, porque creo que el comportamiento por defecto es abrir tantas instancias de tu aplicación como archivos haya en el grupo, de manera que la propia aplicación debe estar preparada para manejar una sóla instancia.

LineComment Saludos

¡Siempre sorprendiendo! Me dejas ahora mismo dubitando, que es gerundio, Román. Iba a haberte contestado anoche desde mi portátil, pero, no tenía lo necesario para hacer alguna prueba. Hoy me dispongo a hacer una prueba con uno de mis programas, total, para descubrir, que, si selecciono varios archivos asociados al mismo, y, simplemente, pulso la tecla "enter" sobre ellos, el comportamiento no es el esperado: que se abran todos los archivos seleccionados.

Tengo que revisar esto en cuanto pueda. :)

roman 19-10-2017 15:47:29



;)

LineComment Saludos

Guti13 19-10-2017 22:11:35

Una idea
 
Quizás lo que puedes usar es una aplicación puente, es decir que al recibir el parámetro mire si tu aplicación principal está abierta y en ese caso simplemente le pase el archivo y no abra otra instancia de la aplicación y en caso contrario, que efectivamente la abra.

Mendizabal 30-10-2017 09:10:20

Cita:

Empezado por Guti13 (Mensaje 521843)
Quizás lo que puedes usar es una aplicación puente, es decir que al recibir el parámetro mire si tu aplicación principal está abierta y en ese caso simplemente le pase el archivo y no abra otra instancia de la aplicación y en caso contrario, que efectivamente la abra.

No hay necesidad de utilizar ninguna aplicación puente. La propia aplicación principal puede comprobar al lanzarse si hay otra instancia abierta y, en caso afirmativo, hacer lo que sea pertinente.


La franja horaria es GMT +2. Ahora son las 03:51:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi