Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-03-2008
pai_delpher pai_delpher is offline
Miembro
 
Registrado: mar 2008
Posts: 11
Poder: 0
pai_delpher Va por buen camino
Tamaño de Ventana de Windows

Saludos a todos en la comunidad.

Quiero saber la posición de una ventana de windows (la ventana del Windows Live Messenger), investigando supe de varias funciones de la API:

GetWindowPlacement y GetWindowRect

Ya probé con este código y variaciones en los Left, Right, Top y Bottom, pero no me muesta las coordenadas reales, no entiendo en que se basan las posiciones que recibo, por favor ayudenme a enterder como funcionan estas funciones.

Código Delphi [-]
Var
 VMess : HWND;
 Tam   : TRect;
 H, W  : Integer;
 Lugar : WindowPlacement;

begin
VMess := FindWindow(nil, 'Windows Live Messenger');
GetWindowRect(VMess, Tam);
//W := Tam.Right - Tam.Left;
//H := Tam.Bottom - Tam.Top;
//Lugar.length := sizeof(Lugar);
GetWindowPlacement(VMess, @Lugar);
W := Lugar.rcNormalPosition.Right - Lugar.rcNormalPosition.Bottom;
H := Lugar.rcNormalPosition.Left - Lugar.rcNormalPosition.Top;
Button1.Caption := IntToStr(W) + ' ; '+ IntToStr(H);
//Form1.Caption :=

Como verán lo intente de varias formas, pero no logro sacarlo. Mi objetivo es obtener la posición al iniciar y actualizala al moverla.

Desde ya Muchas Gracias.
Responder Con Cita
  #2  
Antiguo 31-03-2008
Avatar de PeterPunk
PeterPunk PeterPunk is offline
Miembro
 
Registrado: ene 2008
Ubicación: Vigo
Posts: 22
Poder: 0
PeterPunk Va por buen camino
Código Delphi [-]
 
var
  VMess : HWND;
procedure TForm1.FormCreate(Sender: TObject);
begin
  VMess := FindWindow(nil, 'Windows Live Messenger');
  Timer1.Interval := 50;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
  Tam: TRect;
begin
  if vMess <> 0 then
    begin
      GetWindowRect(VMess, Tam);
      Form1.Caption := 'Posición: ' + InttoStr(Tam.Left) + ' ; ' + IntToStr(Tam.Top) + ' - '
                      +'Tamaño: ' + IntToStr(Tam.Right - Tam.Left) + 'x' + IntToStr(Tam.Bottom - Tam.Top);
    end
end;
Saqué el FindWindow del timer para que no lo ejecutase case 50 milisegundos, pero si se cierra y abre el Windows Live Messenger mientras tu programa esté activo será mejor que lo vuelvas a meter.
Responder Con Cita
  #3  
Antiguo 31-03-2008
pai_delpher pai_delpher is offline
Miembro
 
Registrado: mar 2008
Posts: 11
Poder: 0
pai_delpher Va por buen camino
Muchas gracias, de todas formas, ya me había dado cuenta del Left y Top. Me funcionó correctamente.

En relación al Timer mi idea era usar un evento de la API que me indique cuando la ventana es movida, más que nada por la lentitud y perdida de memoria innecesaria.

Desde ya muchas gracias por responder.

Saludos.
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
ayuda... quitar la barra de herramientas y ajustar tamaño ventana y botón maximizar. gontxalo Internet 6 23-05-2005 16:35:22
ayuda... tamaño ventana y botón maximizar. gontxalo OOP 0 18-05-2005 19:32:52
tamaño ventana MDIChild ronson Varios 2 26-02-2004 16:15:22
Tamaño de la ventana ... Slaughter Varios 2 20-02-2004 11:54:45
tamaño de una ventana hija Alejo Varios 2 09-07-2003 06:34:18


La franja horaria es GMT +2. Ahora son las 07:31:26.


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