/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

¿Cómo obtener las ventanas abiertas?

 
      Índice del Foro elrincondelc.com -> Windows
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
eagleoneraptor



Registrado: 20 May 2008
Mensajes: 187
Ubicación: Buenos Aires(Argentina)

MensajePublicado: 15/09/2008 5:36 pm
Título: ¿Cómo obtener las ventanas abiertas?

Hola, quería preguntar como hago para obtener el manipulador de ventana (HWND) de las ventanas abiertas y/o minimizadas, minimizadas en la barra de tareas no en el IconTray.
Intente usar EnumWindows pero sale con un monton de ventanas que no tienen nada que ver.

Gracias.
Un Saludo!
_________________
"Aquel que hace una bestia de si mismo se libra del dolor de ser un hombre". Dr. Johnson
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7517
Ubicación: Mexico

MensajePublicado: 16/09/2008 8:41 am
Título:

La forma recomendada por MSDN para iterar las ventanas es mediante esa funcion, una "solucion" seria realizar un filtro dentro de la "callback" funcion.

Un saludo
_________________
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Volver arriba
eagleoneraptor



Registrado: 20 May 2008
Mensajes: 187
Ubicación: Buenos Aires(Argentina)

MensajePublicado: 16/09/2008 10:15 am
Título:

Lo que hago en la función CALLBACK es obtener el nombre de la ventana, pero no se como verificar si el manipulador corresponde a una ventana activa y/o minimizada, aquí esta mi código:

Código:
#define _WIN32_WINNT 0x0501

#include <windows.h>
#include <sstream>
using namespace std;

BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam){
    char buf[128];
    //Aqui no se como filtrar
    GetWindowText(hwnd,buf,128);
    printf("%s\n",buf);
}

int main()
{
    EnumWindows(EnumWindowsProc,0);

   getchar();
    return 0;
}


Intente filtrar con IsWindowVisible por ejemplo pero no funciona.
En este ejemplo aparecen las ventanas abiertas y minimizadas pero aparecen 100 mas que no necesito.

Seguire investigando.

Un Saludo!
_________________
"Aquel que hace una bestia de si mismo se libra del dolor de ser un hombre". Dr. Johnson
Volver arriba
eagleoneraptor



Registrado: 20 May 2008
Mensajes: 187
Ubicación: Buenos Aires(Argentina)

MensajePublicado: 26/10/2008 10:28 am
Título:

Bueno no se si a alguien le interesa, pero lo único que he podido lograr es esto:

Código:
#define _WIN32_WINNT 0x0600
#define _WIN32_IE    0x0600

#include <windows.h>
#include <iostream>
using namespace std;

BOOL CALLBACK enumproc(HWND hwnd,LPARAM lParam)
{
    char stTitle[MAX_PATH];
    if(IsWindowVisible(hwnd)){
        GetWindowText(hwnd,stTitle,MAX_PATH);
        cout << stTitle << endl;
    }
    return TRUE;
}

int main()
{
    EnumWindows(enumproc,0);
    cin.get();
    return 0;
}


Pero obviamente no es perfecto, algunas ventanas sobran.
Si alguien tiene una solución, ya que se tiene que poder hacer, si con ALT+TAB aparecen las ventanas porque no lo podría hacer uno mismo.

Un Saludo!
_________________
"Aquel que hace una bestia de si mismo se libra del dolor de ser un hombre". Dr. Johnson
Volver arriba
      Índice del Foro elrincondelc.com -> Windows
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com