La Web del Programador: Comunidad de Programadores
 
    Pregunta:  3776 - MINIMIZAR TODAS LAS VENTANAS
Autor:  JUAN JOSE RIVERA GALLO
COMO PUEDO MINIMIZAR TODAS LAS VENTANAS QUE TENGO ABIERTAS CONTANDO LA DEL PROGRAMA EN VISUAL BASIC CON UN SOLO COMMAND BUTTON LES AGRADECERIA QUE ME ESCRIBIERAN EL CODIGO OJALA QUE MANEJANDO LAS API GRACIAS.

ATT

  Respuesta:  juan cecconi
Para poder manipular cualquier ventana debes tomar un manejador de la misma, esto es recurrir a la funcion GetTopWindow para tomar la ventana de orden principale (le paso el null) luego hace un lazo buscando las siguientes (de igual categoria) y GetNextWindow para buscar las que le siguen hasta que la funcion me indique que ya no hay mas. Esto es lo que hace la funcion de ejemplo que hice "Find_Wnd", que toma como parametro un string con el titulo de la ventana a buscar. Si tiene exito la funcion devuelve el manipulador, caso contrario devuelve 0 (null).
Luego tendrias que utilizar SetWindowPos para manejar las caracteristicas de la ventana (Minimizarla, Ocultarla, Etc)

Private Function Find_Wnd(Caption As String) As Long
Dim Retval As Long, hwnd As Long
Dim Buffer As String

Find_Wnd = 0 ´Prevengo que no este la ventana
hwnd = GetTopWindow(0) ´ Toma la ventana que estaarriba de todo!
Do
hwnd = GetNextWindow(hwnd, GW_HWNDNEXT) ´ pasa a buscar la siguiente hasta encontrar la que busco!!!
If hwnd = 0 Then Exit Function
Buffer = String(255, " ") ´llena el string con espacios (asi quita los char NULL)
Retval = GetWindowText(hwnd, Buffer, 255) ´toma el titulo de la ventana (si es una ventana y no un control!)
Loop Until (InStr(1, Buffer, Caption, vbTextCompare) <> 0)
Find_Wnd = hwnd
End Function