Beschreibung für "Fenster.dll"

Mit Fenster.dll werden die Informationen zum Haupt-Fenster (Parent Window) und allen zugehörigen Kindfenstern (ChildWindows) gefunden und an das Profanprogramm übergeben.

Zum Finden des gewünschten Hauptfensters ist der Fenstertitel (zumindest Anfangsteil des Fenstertitels) dieses Hauptfensters an Fenster.dll zu übergeben.
Ist der Fenstertitel des zu suchenden Programms nicht genau bekannt kann er über den Taskmanager (Strg + Alt + Entf) / Anwendungen eruiert werden.
Das Programm des zu findenden Fensters muß zuvor gestartet worden sein!

Die von Fenster.dll gelieferten Informationen bestehen aus:
- dem vollständigen Fenstertitel
- dem Fensterhandle
- der Fensterklasse

Die DLL hat folgende Funktionen:
- Hauptfenster. Holt alle Informationen zum gesuchten Hauptfenster. Der Aufruf ist einmal durchzuführen.
- Kindfenster. Holt alle Informationen zu den Kindfenstern. Der Aufruf ist mehrmals durchzuführen.
- Dll_Info. Zeigt die Version der DLL an.

für die Aufrufe (=Funktionen) werden 2 Bereichsvariablen benutzt und sind entsprechend zu DIMensionieren:
Dim FText#,256
Dim ClassText#,150

( die Namen dieser beiden Bereichsvariablen sind frei wählbar. Die Größe muß ausreichend sein um die Texte aufnehmen zu können. Die vorgeschlagenen Werte sollten ausreichend sein).

Zur korrekten Funktion ist der Handle (%hWnd) des aufrufenden Programmes erforderlich.
Daher muß das aufrufende Programm ein Fenster haben. Es kann entweder mit CLS oder mit Window definiert werden.
Dabei ist es auch möglich für die Größe und für die Koordinaten des Fensters 0 anzugeben.

Im Profan-Programm sind die Funktionen zu definieren:
Def Hauptfenster(3) ! "Fenster.DLL","Hauptfenster"
Def Kindfenster(2) ! "Fenster.DLL","Kindfenster"
Def DllInfo(0) ! "Fenster.DLL","Dll_Info"

Die DLL muß vor dem ersten Aufruf mit
DLL& = UseDLL("Fenster.DLL")
und vor dem Programmende mit
FreeDLL DLL&
wieder entladen werden.

Beschreibung der Aufrufe

@DllInfo()
Diese Funktion zeigt nur Informationen über die Version an.

Ret& = @Hauptfenster(%hWnd,FText#,ClassText#)
Diese Funktion ist einmal aufzurufen und zeigt die Informationen zum Hauptfenster und wieviele Kindfenster dazu vorhanden sind an. Vor dem Aufruf muß der Fenstertitel des Hauptfensters (bzw. der Teilstring mit dem der Fenstertitel beginnt) in die Bereichsvariable FText# übertragen worden sein. Die Funktion liefert als Ergebnis (in Ret&) die Anzahl der Kindfenster. Ist der Wert -1 wurde das Hauptfenster nicht gefunden (wurde das Programm mit diesem Fenster gestartet?).
In den Stellen 1 - 4 von FText# steht, als LongInt, der Handle des Hauptfensters und ab Stelle 5 der volle Fenstertitel. In ClassText# steht ab Stelle 1 der Klassenname.

Ret& = @Kindfenster(FText#,ClassText#)
Hier werden in einer Schleife die Informationen der Kindfenster abgefragt. Dabei kann der Wert in Ret& (als Ergebnis der Funktion @Hauptfenster) als Schleifenzähler benutzt werden. Ret& wird mit jedem Funktionsaufruf um 1 verringert. Erreicht Ret& den Wert 0 sind damit die Informationen des letzten Kindfensters erreicht worden. In den Stellen 1 - 4 von FText# steht, als LongInt, der Handle des Kindfensters und ab Stelle 5 der volle Fenstertitel. In ClassText# steht ab Stelle 1 der Klassenname.
Der Fenstertitel eines Kindfensters kann auch leer sein. Daher ist eine Identifikation eines bestimmten Fensters oft nur über die Klasse möglich.
Bei der Erstellung von Buttons, oder Text wird normalerweise ein Text angegeben. Dieser Text erscheint als Fenstertitel. Dagegen wird beim Erstellen von Edits oder Listboxen (z.B. @Create("Edit",N,S,X1,Y1,X2,Y2) für S oft "" statt eines Textes angegeben. Und in diesem Falle gibt es daher keinen Fenstertitel.