Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2009
Geta Geta is offline
Miembro
 
Registrado: ago 2004
Posts: 27
Poder: 0
Geta Va por buen camino
Abrir fichero asociado si la aplicacion ya esta activa.

He conseguido, gracias al foro, encontrar la forma de al hacer doble click en un archivo asociado, se ejecute mi aplicación y abra dicho archivo. El problema viene cuando vuelvo hacer doblel click sobre otro archivo pero mi aplicación YA está activa. Intenta crearme otra instancia de mi aplicación. Pues bien, detecto que no se abra otra vez pero ¿como hago para abrir el segundo archivo desde la primera instancia de mi aplicacion, es decir, la que ya estaba corriendo?

La idea es abrir hasta un total de 9 archivos en la misma instancia de la aplicación sin que se ejecute 9 veces la aplicacion, al hacer doblel click sobre los archivos asociados.

gracias
Responder Con Cita
  #2  
Antiguo 12-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Si te entiendo bien, ya tienes resuelta la parte de detectar que tu aplicación ya está abierta desde la nueva instancia ¿no? Aparte de eso, lo que necesitarías es pasarle a la primera instancia el parámetro que se le pasó a la nueva instancia -el nombre del archivo. Para ello creo que puedes usar el mensaje WM_COPYDATA. Hace muy poco vi que Zarko Gajic usaba esa técnica en su sitio delphi.about.com. No creo que sea difícil encontrar la referencia.

// Saludos
Responder Con Cita
  #3  
Antiguo 12-03-2009
Geta Geta is offline
Miembro
 
Registrado: ago 2004
Posts: 27
Poder: 0
Geta Va por buen camino
Exactamente, amigo roman, es eso lo que quiero hacer. Y el enlace que me digiste es muy util, pero usa FindWindow para encontrar la primera instancia de mi aplicacion y el nombre de la ventana cambia porque lleva nombre de ficheros. ¿ Hay otra posibiliadad de usar esa forma de mandar datos entre aplicaciones usando Mutex por ejemplo, para identificar la instancia como lo uso para detectar si esta ya en ejecucion ?
Responder Con Cita
  #4  
Antiguo 12-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Zarco Gajic menciona el uso de FindWindows pero también hace uso de mutex. Yo tengo una unidad que se ocupa de eso (excepto del paso de parámetros de una instancia a otra), pero en estos momentos mi sitio anda de capa caida y no tengo una copia a mano.

De todas formas, un mutex te sirve para controlar que haya sólo una copia de la aplicación pero no es lo que usarías para pasar parámetros.

----------

Haciendo una revisión, veo que no era con Zarco Gajic donde había visto el uso de WM_COPYDATA. La referencia correcta es este artículo de DelphiDabbler.

Ahí viene muy bien explicado. También usa FindWindow pero de una forma más inteligente, aunque a mi en lo particular no me convence por el trabajo extra que hay que hacer. Pero revisa la parte de WM_COPYDATA.

// Saludos
Responder Con Cita
  #5  
Antiguo 13-03-2009
Geta Geta is offline
Miembro
 
Registrado: ago 2004
Posts: 27
Poder: 0
Geta Va por buen camino
Pues creo que el segundo enlace que has puesto me puede venir muy bien, muchas gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Abrir un programa desde un archivo asociado (2) soul6301 Varios 6 27-12-2007 17:47:58
como saber que columna del dbgrid esta activa? JavierO Varios 4 02-11-2005 20:55:26
Como modificar valores desde un dbgrid q esta asociado a un QUERY? fmonte SQL 12 26-08-2004 23:25:22
Saber cuando se activa el dataset asociado a un TDBGrid __cadetill OOP 4 17-06-2004 13:37:24
Abrir un programa desde un archivo asociado soul6301 Varios 5 31-05-2004 02:05:26


La franja horaria es GMT +2. Ahora son las 16:47:38.


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
Copyright 1996-2007 Club Delphi