PDA

Ver la Versión Completa : Ocultar ventanas en el escritorio


roman
19-11-2003, 19:35:24
Existe un botoncito en la barra de tareas de Windows que al oprimirlo oculta todas las ventanas que haya abiertas; seguro lo han visto :) .

¿Cómo hago esto en código? ¿Debo usar EnumWindows para ocultar una por una o existe alguna función de la API que facilite esto?

// Gracias

delphi.com.ar
19-11-2003, 20:33:41
¿Ocultar = Minimizar?
Puedes usar EnumWindows, o... prueba esto:

var
hWnd: THandle;
begin
hWnd := FindWindow('Shell_TrayWnd', nil);
if hWnd <> 0 Then
PostMessage(hWnd, WM_COMMAND, $001A3, 0);
end;



Saludos!

roman
19-11-2003, 20:45:17
¡Muy bueno el truco!. ¿De casualidad sabes cual es entonces el id del menú "Deshacer Minimizar todo para hacer lo inverso?

// Gracias

delphi.com.ar
19-11-2003, 21:06:33
MINIMIZE_ALL = $01A3;
RESTORE_ALL = $01A0;

Los nombres de estas constantes son inventados. Tené en cuenta que esto no se si funciona en todos los Windows, no recuerdo si Win95 tenía esta opción de menú (creo que sí). Si lo haces con EnumWindows, seguramente funcione en todas las plataformas.

Saludos!

roman
19-11-2003, 21:36:20
delphi.com.ar comentó:
MINIMIZE_ALL = $01A3;
RESTORE_ALL = $01A0;


Je, je, gracias otra vez. Estuve intentando distintos códigos sólo que en la dirección contraria:

$01A4, $01A5, $01A6, ...

:D

// Saludos

roman
11-02-2004, 07:57:44
Bueno, este es un tema de hace tres meses pero buscando otra cosa me encontré esto que puede interesarle a alguien:


uses
ComObj;

procedure OcultarVentanas;
var
Shell: OleVariant;

begin
Shell := CreateOleObject('Shell.Application');
Shell.MinimizeAll;
Shell := Unassigned;
end;

procedure MostrarVentanas;
var
Shell: OleVariant;

begin
Shell := CreateOleObject('Shell.Application');
Shell.UndoMinimizeAll;
Shell := Unassigned;
end;


// Saludos