Spróbuj tego:
var
Hnd: HWND;
function EnumWindowsProc(H: HWND; P: Pointer): BOOL; stdcall;
var
Buf: array[0..255] of Char;
S: String;
begin
Result := True;
if (IsWindow(H)) and //jeżeli uchwyt jest oknem
(IsWindowVisible(H)) and //i jest widzialne
(not IsIconic(H)) and //i nie jest zminimalizowane
(H <> Hnd) then //i nie jest uchwytem do ukrycia
begin
GetWindowText(H, Buf, 255);
if Buf[0] <> #0 then
begin
S := String(Buf);
if Length(S) > 6 then
if Copy(S, 1, 7) = 'Forma #' then //u mnie nazwy form to Forma #...
SetForegroundWindow(H); //ustawiamy jako okno wierzchnie
end;
end;
end;
procedure SchowajForme(H: HWND); //H - uchwyt do okna do schowania
begin
Hnd := H;
EnumWindows(@EnumWindowsProc, 0);
end;
Zasada działania jest prosta: wyszukuje formy o tytułach rozpoczynających się na "Forma #" i różnych od uchwytu do schowania. Jeżeli chcesz schować w tyle kilka okienek, musisz zmodyfikować obie procedury tak, aby Hnd było tablicą.