Das Problem besteht darin, dass es mehrere Top-Level-Fenster zu einem Prozess geben kann. Ein "leeres" Delphi-Programm hat bspw ein Fenster der Klasse
TApplication und eins der Klasse
TForm1. Es ist also unbedingt soetwas ähnliches wie eine "Schleife" notwendig, um das Problem zu lösen.
Wenn Du einmal in der Delphi Online-Hilfe (
OH) den Begriff
EnumWindows nachschlägst, sollte die Hilfedatei der Windows-
API (Bestandteil des
PSDK) gezeigt werden und es ist zu erkennen, dass diese Funktion zwei Parameter erwartet, von der der erste eine sog. CallBack-Funktion ist:
Zitat:
Points to an application-defined callback function. For more information, see the EnumWindowsProc callback function.
Eine CallBack-Funktion ist soetwas ähnliches wie eine Schleife (genauer:
internal iterator pattern) und ist in anderen Programmiersprachen verbreiteter. Beim Einsatz von CallBack-Funktionen wird der Gedanke des
Zuständigkeitsprinzips verfolgt: Der Iterator (hier:
EnumWindows) "weiß", wie man an die Elemente "herankommt" (hier: Die Handles der Top-Level-Fenster) und der Client (hier: Dein Programm, genauer die CallBack-Funktion deines Programms) weiß, was mit diesen Elementen getan werden soll. Auf diese Weise lässt sich
EnumWindows für viele Zwecke Einsetzen, weil sie von der tatsächlichen Logik
entkoppelt ist, ohne dass der Client eigene Schleife programmieren muss (zB auf der Basis von
GetWindow).
Dieser Absatz, die Hilfetexte zu
EnumWindowsProc sowie das vorherige Posting mit dem Gedanken, welche Logik nun in der CallBack-Funktion enthalten sein könnte, helfen Dir vielleicht schon weiter...