запоминать открытые окна же
Код:
var HiddenWnd:array of HWND;
...
function EnumMiniProc (Wd: HWnd; Param: LongInt): Boolean; stdcall;
Begin
If Wd<>Form1.Handle and isWindow(WD) and IsWindowVisible(WD) and not IsIconic(WD) then
begin
SetLength(HiddenWnd, Length(HiddenWnd)+1);
HiddenWnd[High(HiddenWnd)]:=WD;
ShowWindow(WD, SW_hide);
end;
EnumMiniProc:= TRUE;
end;
и потом разворачивать через этот массив с конца, попутно обрезая его. ток непонятно как ты разворачиваешь окна SW_HIDE'ом (SW_RESTORE вроде нужно)