PostMessage

Platziert eine Meldung in die Meldungswarteschlange eines Fensters oder Steuerelements.

PostMessage MldNummer , wParam, lParam, Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Parameter

MldNummer

Typ: Integer

Die zu sendende Meldungsnummer. Einige solcher Nummern finden Sie unter Windows-Meldungen.

wParam, lParam

Typ: Integer

Wenn einer der Parameter weggelassen wird, wird 0 gesendet. Andernfalls geben Sie die erste und zweite Komponente der Meldung an.

Jeder Parameter muss ein Integer sein.

Wenn AutoHotkey oder das Zielfenster 32-Bit ist, werden nur die unteren 32 Bits des Parameters verwendet, d.h. die Werte werden gekürzt, wenn sie vorzeichenfähig sind und außerhalb des Bereichs von -2147483648 bis 4294967295 (-0x80000000 bis 0x7FFFFFFF) liegen oder wenn sie vorzeichenlos sind und außerhalb des Bereichs von 0 bis 4294967295 (0xFFFFFFFF) liegen. Wenn sowohl AutoHotkey als auch das Zielfenster 64-Bit sind, kann ein beliebiger von AutoHotkey unterstützter Integerwert verwendet werden.

Steuerelement

Typ: Zeichenkette, Integer oder Objekt

Wenn weggelassen, wird die Meldung direkt an das Zielfenster gepostet, nicht an eines seiner Steuerelemente. Andernfalls geben Sie die ClassNN-Bezeichnung, den Text oder die HWND-Nummer des Steuerelements an, oder ein Objekt mit einer Hwnd-Eigenschaft. Einzelheiten finden Sie unter Der Steuerelement-Parameter.

Die HWND-Nummer muss nicht unbedingt die HWND-Nummer eines Steuerelements (bzw. eines untergeordneten Fensters) sein. Es kann auch die HWND-Nummer eines Top-Level-Fensters verwendet werden.

FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Typ: Zeichenkette, Integer oder Objekt

Wenn jeder dieser Parameter leer ist oder weggelassen wird, wird das Zuletzt Gefundene Fenster verwendet. Andernfalls geben Sie für FensterTitel einen Fenstertitel oder andere Kriterien zur Identifizierung des Zielfensters und/oder für FensterText eine Teilzeichenkette aus einem Textelement des Zielfensters an (Textelemente können mit dem internen Tool "Window Spy" in Erfahrung gebracht werden).

AusnahmeTitel und AusnahmeText können verwendet werden, um ein oder mehrere Fenster anhand ihres Titels oder Textes auszuschließen. Ihre Angabe ähnelt der von FensterTitel und FensterText, außer dass AusnahmeTitel keine anderen Kriterien als den Fenstertitel erkennt.

Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Standardmäßig werden versteckte Fenster nicht erkannt und versteckte Textelemente erkannt, was mit DetectHiddenWindows und DetectHiddenText geändert werden kann. Standardmäßig kann ein Fenstertitel den angegebenen FensterTitel oder AusnahmeTitel an beliebiger Stelle enthalten, um eine Übereinstimmung zu sein, was mit SetTitleMatchMode geändert werden kann.

Fehlerbehandlung

Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte.

Es wird ein OSError ausgelöst, wenn die Meldung nicht gepostet werden konnte. Wenn z.B. das Zielfenster auf einer höheren Integritätsstufe läuft als das Skript (d.h. das Zielfenster läuft mit Adminrechten, das Skript nicht), können Meldungen blockiert werden.

Bemerkungen

Seien Sie vorsichtig bei der Verwendung dieser Funktion - das Senden einer Meldung an das falsche Fenster (oder das Senden einer ungültigen Meldung) kann dazu führen, dass die Zielanwendung falsch reagiert oder abstürzt. Die meisten Anwendungen sind nicht dafür ausgelegt, bestimmte Arten von Meldungen aus externen Quellen zu empfangen.

PostMessage platziert die Meldung in die Meldungswarteschlange des Zielfensters, ohne auf eine Bestätigung oder Antwort zu warten. SendMessage hingegen wartet, bis das Zielfenster die Meldung verarbeitet hat oder bis das Zeitlimit überschritten wurde.

Im Gegensatz zu SendMessage sendet PostMessage in der Regel nur einfache numerische Werte, keine Pointer, die auf Strukturen und Zeichenketten verweisen.

Um eine Meldung an alle Fenster im Betriebssystem zu senden - auch an solche, die versteckt oder deaktiviert sind - fügen Sie 0xFFFF in FensterTitel ein (0xFFFF ist HWND_BROADCAST). Diese Technik sollte nur für Meldungen verwendet werden, die zum Broadcasten geeignet sind.

Mit OnMessage kann ein Skript eine Meldung abfangen.

Eine Erklärung zur Verwendung dieser Funktion finden Sie unter PostMessage / SendMessage Tutorial.

SendMessage, Meldungsliste, PostMessage / SendMessage Tutorial, OnMessage, Winamp automatisieren, DllCall, ControlSend, MenuSelect

Beispiele

Schaltet die Tastaturbelegung/Sprache des aktiven Fensters auf Englisch (US) um.

PostMessage 0x0050, 0, 0x4090409,, "A"  ; 0x0050 ist WM_INPUTLANGCHANGEREQUEST.