| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
eagleoneraptor

Registrado: 20 May 2008 Mensajes: 187 Ubicación: Buenos Aires(Argentina)
| Publicado: 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
| Publicado: 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)
| Publicado: 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)
| Publicado: 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 | |
 |
|
|