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
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.309
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
  #2  
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
  #3  
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
  #4  
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
  #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
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
  #6  
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
  #7  
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
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 20:14:39.


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