Subclassing mit Access

Nachrichten aufzeichnen

Sichern Sie nun alle Module, und erzeugen Sie ein Formular, mit dem Sie Subclassing an- und ausschalten können. Dazu reichen zwei Schaltflächen, die bei Mausklick jeweils eine der Funktionen Subclass und UnSubclass aufrufen.

Anschließend machen Sie etwas mit dem Fenster – klicken Sie es an, wechseln Sie zu einem anderen Fenster, verschieben Sie es, maximieren, minimieren oder schließen Sie es.

Die Tabelle tblMessages wird im Anschluss einige Nachrichten enthalten. Die Werte für wParam und lParam hängen dabei von der jeweiligen Message ab.

Noch interessanter ist es natürlich, live mitzuerleben, welche Aktion welche Message auslöst. Dazu erweitern Sie das Formular mit den beiden Schaltflächen zum Aktivieren und Deaktivieren des Subclassing einfach wie in Bild 2: Dazu stellen Sie dessen Datenherkunft auf die Tabelle tblMessages ein, fügen die passenden Steuerelemente hinzu und ergänzen die Funktion fctHook AccessWindow um die folgende Anweisung (vor dem Weiterleiten der Message):

Forms!frmSubclassing.Requery

Bild 2: Entwurfsansicht einer Formulars zur Live-Ausgabe von Windows-Messages.
Bild 2: Entwurfsansicht einer Formulars zur Live-Ausgabe von Windows-Messages.

Leider können Sie damit nicht alle Aktionen erfassen, da der Fokus beim Aktualisieren des Formulars immer wieder auf dieses verschoben wird und dadurch etwa das Anzeigen eines Kontextmenüs beim Rechtsklick unterbunden wird.

Bild 3 zeigt, wie das Formular in Aktion aussieht – hier wurde soeben ein Textfeld mit dem Mauszeiger angeklickt.

Bild 3: Das Formular zur Anzeige der aktuellen Windows-Messages im Livebetrieb.
Bild 3: Das Formular zur Anzeige der aktuellen Windows-Messages im Livebetrieb.

Informationen zu den Messages und den passenden Werten der Parameter wParam und lParamfinden Sie an den verschiedensten Stellen – googeln Sie einfach nach den gesuchten Message- Codes (notfalls die hexadezimale Variante angeben, etwa &h10 für den Wert 16). Eine Suche mit „windows message &h20“ in http://groups.google.de/ liefert etwa knapp 1.000 Einträge.