Also ein Fensterauflister ist schnell gemacht. Folgendes Beispiel demonstriert, wie -via Buttonklick- alle Hauptfenster, die sichtbar sind oder ein Systemmenü haben, minimiert werden:
		                     
             Quelltext
                        Quelltext                    
           	 										| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 
 | function CloseAll(Wnd: hWnd; lparam: LPARAM): longbool; stdcall;begin
 if((GetWindowLong(Wnd,GWL_STYLE) and (WS_VISIBLE or WS_SYSMENU)) = (WS_VISIBLE or WS_SYSMENU)) then
 PostMessage(Wnd,WM_SYSCOMMAND,lParam,0);
 
 Result := true;
 end;
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 EnumWindows(@CloseAll,SC_MINIMIZE);
 end;
 | 
		
	  
Wer statt 
SC_MINIMIZE mal 
SC_CLOSE eingibt, kriegt auch offene Explorer zu. 
 
So, wenn du dir jetzt mal die Funktion "CloseAll" anguckst, dann siehst du, dass dort eine HWND-Variable vorhanden ist. Wenn du die if-Abfrage und das 
PostMessage weglässt könntest du z.B. mit
		                     
             Quelltext
                        Quelltext                    
           	 										| 1:2:
 
 | GetClassNameGetWindowText
 | 
		
	  
den Klassennamen und den Fenstertitel auslesen und an eine ListBox usw. weiterreichen. Achtung: Nicht jedes Fenster liefert einen Fenstertitel zurück.
Für Prozesse und Threads musst du andere Methoden benutzen. Da gibt´s aber einige Delphi-Demos. Musst einfach mal ´ne Suchmaschine wie Google bemühen, da sollte was zu finden sein.