Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-09-2010
jandro jandro is offline
Miembro
 
Registrado: jul 2007
Posts: 56
Poder: 17
jandro Va por buen camino
Acoplar mi form a una aplicacion externa

Hola a todos!!

Necesito que la aplicación que estoy desarrollando vaya pegada a otra aplicación externa. Por ejemplo imaginemos que quiero que mi aplicación vaya siempre acoplada a la calculadora de windows, como podría hacer eso?? Se detectar si la aplicación esta abierta o no, pero no se como puedo averiguar que tamaño tiene y en que posición esta. Alguien me puede echar una mano?

Muchas gracias.

Saludos.
Jandro.
Responder Con Cita
  #2  
Antiguo 17-09-2010
Avatar de bosster_018
bosster_018 bosster_018 is offline
Miembro
 
Registrado: nov 2009
Ubicación: Bolivia
Posts: 127
Poder: 15
bosster_018 Va por buen camino
Hola

Acoplar tu aplicación a otra, no se me ocurre como hacerlo...
Pero en la FTP del Foro Clubdelphi hay un ejemplo de como "poner" Una aplicación EXTERNA dentro de tu formulario. Por ejemplo el "Bloc de notas" o "notepad.exe" dentro del formulario:

Aquí el ejemplo:

Ejemplo26_notepad_window

Suerte!
Responder Con Cita
  #3  
Antiguo 17-09-2010
Avatar de bosster_018
bosster_018 bosster_018 is offline
Miembro
 
Registrado: nov 2009
Ubicación: Bolivia
Posts: 127
Poder: 15
bosster_018 Va por buen camino
Se me olvidaba

Puedes cambiar el nombre "notepad.exe" por el nombre de la calculadora de Windows.... (No me acuerdo cual es el nombre y no tengo Windows a mano )
Puedes ir probando con varias aplicaciones que posee Windows Xp
Responder Con Cita
  #4  
Antiguo 17-09-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jandro Ver Mensaje
Se detectar si la aplicación esta abierta o no, pero no se como puedo averiguar que tamaño tiene y en que posición esta. Alguien me puede echar una mano?
Utilizando FindWindows, supongo que puedes acceder a la ventana que pertenece a la aplicación que buscas. Una vez que tengas el Handle de la ventana, puedes probar con otras funciones de la PAI del mismo grupo tipo, GetWindwPlacement, GetWindowRect,... para obtener las coordenadas.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 17-09-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Neftali Ver Mensaje
Utilizando FindWindows, supongo que puedes acceder a la ventana que pertenece a la aplicación que buscas. Una vez que tengas el Handle de la ventana, puedes probar con otras funciones de la PAI del mismo grupo tipo, GetWindwPlacement, GetWindowRect,... para obtener las coordenadas.
Totalmente de acuerdo con Neftali, usando FindWindow y GetWindowPlacement se pueden obtener esos valores en pocas líneas y de forma sencilla:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 Handle: THandle;
 wpPtr: TWindowPlacement;
 R: TRect;
begin
   Handle:= FindWindow(PChar('notepad'),nil);
   if Handle <> 0 then
   begin
     GetWindowPlacement(Handle, @wpPtr);
     R:= wpPtr.rcNormalPosition;
     ShowMessage('Left: '+IntToStr(R.Left)+#10#13+
                 'Top: '+IntToSTr(R.Top)+#10#13+
                 'Right: '+IntToStr(R.Right)+#10#13+
                 'Bottom: '+IntToStr(R.Bottom))
   end
end;

Saludos.
Responder Con Cita
  #6  
Antiguo 17-09-2010
jandro jandro is offline
Miembro
 
Registrado: jul 2007
Posts: 56
Poder: 17
jandro Va por buen camino
Genial!! Muy buenas respuestas!!

Lo del ejemplo de meter el notepad dentro de tu apli, es genial saberlo, aunque no me vale para lo que quiero hacer.

El codigo que me da ecfisa si es a lo que yo me referia. En realidad es voy a hacer dos aplicaciones independientes, pero que si en algun ordenador se instalan las dos, quiero que si se mueve una la otra vaya pegada y tambien se mueva como si fueran una.

ecfisa, necesitaria saber tambien en tamaño que tiene la ventana (ancho y alto) hay algun parametro que me lo pueda dar??

Muchisimas gracias a todo!! Me ha ayudado mucho.

Saludos.
Jandro.
Responder Con Cita
  #7  
Antiguo 17-09-2010
jandro jandro is offline
Miembro
 
Registrado: jul 2007
Posts: 56
Poder: 17
jandro Va por buen camino
Cita:
Empezado por jandro Ver Mensaje
Genial!! Muy buenas respuestas!!

Lo del ejemplo de meter el notepad dentro de tu apli, es genial saberlo, aunque no me vale para lo que quiero hacer.

El codigo que me da ecfisa si es a lo que yo me referia. En realidad es voy a hacer dos aplicaciones independientes, pero que si en algun ordenador se instalan las dos, quiero que si se mueve una la otra vaya pegada y tambien se mueva como si fueran una.

ecfisa, necesitaria saber tambien en tamaño que tiene la ventana (ancho y alto) hay algun parametro que me lo pueda dar??

Muchisimas gracias a todo!! Me ha ayudado mucho.

Saludos.
Jandro.
Me autocontesto. Acabo de darme cuenta que se puede calcular restando Right-Left y Top-bottom. Perdon.

Saludos.
Jandro.
Responder Con Cita
  #8  
Antiguo 17-09-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Correcto jandro.

Y parametrizando un poco queda:
Código Delphi [-]
function GetWndCoord(WndName: string): Trect;
var
 Handle: THandle;
 wpPtr: TWindowPlacement;
begin
  Handle:= FindWindow(PChar(WndName),nil);
  if Handle <> 0 then
  begin
    GetWindowPlacement(Handle, @wpPtr);
    Result:= wpPtr.rcNormalPosition;
  end
  else
    raise Exception.Create('Aplicación no encontrada');
end;

Ejemplo llamadas:
Código Delphi [-]
var
  R: TRect;
begin
    R:= GetWndCoord('notepad');
   // ó 
   ShowMessage(IntToStr(GetWndData('notepad').Top));
end;

Saludos.
Responder Con Cita
  #9  
Antiguo 17-09-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cita:
Empezado por ecfisa Ver Mensaje
Ejemplo llamadas:
Código Delphi [-]
var
  R: TRect;
begin
    R:= GetWndCoord('notepad');
   // ó 
   ShowMessage(IntToStr(GetWndData('notepad').Top));
end;
No sera asi:
Código Delphi [-]
var
  R: TRect;
begin
    R:= GetWndCoord('notepad');
   // ó
   ShowMessage(IntToStr(GetWndCoord('notepad').Top));
end;
Lo digo por que de la otra forma a mi me da error.
Saludos
PD: Muy interesante amigo.
__________________
Siempre Novato
Responder Con Cita
  #10  
Antiguo 18-09-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Caral Ver Mensaje
Lo digo por que de la otra forma a mi me da error.
Saludos
PD: Muy interesante amigo.
Así es amigo.
Primero nombré a la función GetWndData (por Get Windows Data) pero luego me pareció más adecuado GetWndCoord (por Get Windows Coordenates). Hice el cambio en la cabecera de función, pero olvidé hacerlo en uno de los ejemplos de llamada ...

Saludos.
Responder Con Cita
  #11  
Antiguo 18-09-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Bueno, por esta vez te perdono, la proxima te envio a leer la guia de estilo tres veces como penitencia....
Saludos
__________________
Siempre Novato
Responder Con Cita
  #12  
Antiguo 18-09-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Caral Ver Mensaje
[..] la proxima te envio a leer la guia de estilo tres veces como penitencia....
Saludos
¡¡¡ Qué malvado !!!
Responder Con Cita
  #13  
Antiguo 19-09-2010
jandro jandro is offline
Miembro
 
Registrado: jul 2007
Posts: 56
Poder: 17
jandro Va por buen camino
Hola de nuevo.

Ahora me surge otra pregunta.
Despues de probar este codigo con el notepad y la calculadora todo funciona, ahora necesito saber cual es el nombre de la clase de mi programa al que quiero acoplarlo... no tengo ni idea como averiguarlo. Me echais una manita??

Gracias.
JAndro.
Responder Con Cita
  #14  
Antiguo 19-09-2010
jandro jandro is offline
Miembro
 
Registrado: jul 2007
Posts: 56
Poder: 17
jandro Va por buen camino
Cita:
Empezado por jandro Ver Mensaje
Hola de nuevo.

Ahora me surge otra pregunta.
Despues de probar este codigo con el notepad y la calculadora todo funciona, ahora necesito saber cual es el nombre de la clase de mi programa al que quiero acoplarlo... no tengo ni idea como averiguarlo. Me echais una manita??

Gracias.
JAndro.

Resuelto también con Spy&Capture!!

Saludos.
Responder Con Cita
Respuesta



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
Manipular aplicación externa oabel5 API de Windows 30 27-05-2010 07:04:41
Incrustar aplicación externa en un form Ana María API de Windows 2 01-09-2008 01:45:15
Acceder a una aplicación externa FDB Varios 3 22-01-2008 13:45:02
Aplicacion externa a c++ alloger C++ Builder 1 28-10-2006 00:37:09
Ejecutar aplicación externa taita API de Windows 4 06-08-2005 23:45:57


La franja horaria es GMT +2. Ahora son las 01:07:47.


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