Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-06-2012
Joviali Joviali is offline
Miembro
 
Registrado: may 2006
Posts: 22
Poder: 0
Joviali Va por buen camino
Recoger informacion de todas las ventanas de una aplicación

Buenas,me gustaria saber como recorrer todas las ventas de una aplicación y guardarme el nombre de la ventana, caption y la case de esta.

He estado mirando y se como hacerlo de todo lo que esta en ejecucion en el sistema, pero me insteresa hacerlo de una aplicacion en concreta.

Gracias.
Responder Con Cita
  #2  
Antiguo 17-06-2012
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
HolaJoviali y bienvenido a Club Delphi

Como a todos los que se inician te invitamos a que leas nuestra guía de estilo.

Para obtener los valores de las propiedades Name y Caption de los forms creados en una aplicacion podes utilizar la variable Screen.

Un ejemplo:
Código Delphi [-]
...
var
  i: Integer;
begin
  with Screen do
    for i:= 0 to FormCount-1 do
      ListBox1.Items.Add(Forms[i].Name + ' ' + Forms[i].Caption)
end;
En cuanto a "la case" no se que significa.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 17-06-2012
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
Hola de nuevo.

Releyendo tu mensaje, creo que te referis al nombre de la clase (no me dí cuenta en la primera leida).

En ese caso cambiá en el código anterior esta linea:
Código Delphi [-]
     ListBox1.Items.Add(Forms[i].Name + ' ' + Forms[i].Caption)

Por esta:
Código Delphi [-]
    ListBox1.Items.Add(Format('Name: %s, Caption: %s, ClassName: %s',
        [Forms[i].Name ,Forms[i].Caption, Forms[i].ClassName]))

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 18-06-2012
Joviali Joviali is offline
Miembro
 
Registrado: may 2006
Posts: 22
Poder: 0
Joviali Va por buen camino
Gracias, por ser tan rapido

Buenas, esto funciona para la misma aplicacion en ejecución , lo que busco son esos mimos datos que me has comentado anteriormente pero de otra aplición . Yo he estado probando con las siguientes funciones:

FindWindow //Para encontrar la aplicacione en concreto.

GetWindowText(wnd, WinName, 144); // Obtiene el texto de la ventana actual
GetClassName(wnd, CName, 144); // Obtiene el nombre de la clase

siendo wnd el Handle de la aplicacion principal.

Pero esto no me funciona ya que no me recorre las ventanas hijas de la apliccion.



En definitiva lo que busco es que una aplicación "A" busque cuantas ventanas tiene la aplicación "B" abiertas. y me de la información de la clase de cada una de ellas:
b--->TF_principal.
b1--->Tf_aux1
b2--->tf_aux2.

Todo esto viene porque estoy haciendo un programa que actualiza otro y necesito saber que esta en la ventana principal de la aplicacion para poder cerrarla y actualizar la aplicación.


Gracias.
Responder Con Cita
  #5  
Antiguo 18-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.059
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #6  
Antiguo 18-06-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Quizás esto te de pistas:

Código Delphi [-]
procedure ListWinInfoFromPId(PId: DWORD; Strings: TStrings);
type
  TWinParam = record
    Handle: THandle;
    PId: DWORD;
  end;
  PWinParam = ^TWinParam;
var
  WinParam: TWinParam;
  Buffer: array [1..255] of char;

  function EnumWindowsProc(Handle: Thandle; lParam: LPARAM): BOOL; stdcall;
  var
    PId: DWORD;
  begin
    Result:= true;
    PId:= 0;
    GetWindowThreadProcessId(Handle, PId);
    if PWinParam(lParam).PId = PId then
    begin
      PWinParam(lParam).Handle:= Handle;
      Result:= false;
    end;
  end;

begin
  WinParam.PId:= PId;
  EnumWindows(@EnumWindowsProc, LPARAM(@WinParam));
  Strings.Clear;
  repeat
    Strings.Add('hWnd: ' + IntToHex(WinParam.Handle, 8));
    GetWindowText(WinParam.Handle, @Buffer, 255);
    Strings.Add('Caption: ' + Buffer);
    GetClassName(WinParam.Handle, @Buffer, 255);
    Strings.Add('Clase: ' + Buffer);
    Strings.Add('-----------------------------------------------');
    WinParam.Handle:= Windows.GetParent(WinParam.Handle);
  until WinParam.Handle = 0;
end;

Ejemplo de uso:
Código Delphi [-]
ListWinInfoFromPId(4800, Memo1.Lines);


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
For a todas las ventanas abiertas. rauros Varios 1 03-08-2008 22:07:59
Cerrar todas las Ventanas MDIChild gluglu OOP 11 18-04-2007 20:12:56
Recoger Información de Balanza altp Varios 4 22-08-2005 21:26:32
Minimizar todas las ventanas santiago14 Varios 2 17-09-2004 03:34:01
minimizar todas las ventanas. soyhugo Varios 2 18-02-2004 13:11:26


La franja horaria es GMT +2. Ahora son las 00:14:21.


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