Sendet simulierte Tastendrücke an ein Fenster oder Steuerelement.
ControlSend , Steuerelement, Tasten, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText ControlSendRaw: Die gleichen Parameter wie oben.
Kann entweder die ClassNN-Bezeichnung (Klassenname und Instanznummer des Steuerelements) oder der Text des Steuerelements sein, die beide mit dem internen Tool Window Spy ermittelt werden können. Verwendet man Text, ist das Übereinstimmungsverhalten abhängig von SetTitleMatchMode. Wenn dieser Parameter weggelassen wird oder leer ist, wird das oberste Steuerelement des Zielfensters verwendet. Wenn dieser Parameter ahk_parent
ist, werden die Tastendrücke direkt an das Zielfenster gesendet, anstatt an eines der darin enthaltenen Steuerelemente (ein Beispiel finden Sie unter Winamp automatisieren).
Um ein Steuerelement via HWND-Nummer (eindeutige ID) anzusteuern, muss der Steuerelement-Parameter leer gelassen und ahk_id %SteuerelementHwnd%
als FensterTitel-Parameter übergeben werden (funktioniert auch bei versteckten Steuerelementen, selbst wenn DetectHiddenWindows ausgeschaltet ist). Die HWND-Nummer eines Steuerelements kann üblicherweise via ControlGet Hwnd, MouseGetPos oder DllCall() abgerufen werden.
Eine Reihe von Tasten, die gesendet werden sollen (weitere Informationen finden Sie auf der Seite des Send-Befehls). Um ein direkt geschriebenes Komma zu senden, versehen Sie es mit einem Escapezeichen (`,). Die Geschwindigkeit, mit welcher die Zeichen gesendet werden, wird durch SetKeyDelay beeinflusst.
Im Gegensatz zum Send-Befehl kann ControlSend keine Mausklicks senden. Verwenden Sie stattdessen ControlClick.
Der Titel oder andere Möglichkeiten zum Identifizieren des Zielfensters. Weitere Informationen finden Sie unter FensterTitel-Parameter.
Eine Zeichenkette, die in einem der Textelemente des Zielfensters enthalten ist (eventuell vorhandene Textelemente können mit dem internen Tool Window Spy aufgedeckt werden). Versteckte Textelemente werden nur erkannt, wenn DetectHiddenText eingeschaltet ist.
Alle Fenster, die diesen Wert in ihren Titeln enthalten, werden ignoriert.
Alle Fenster, die diesen Wert in ihren Textelementen enthalten, werden ignoriert.
[v1.1.04+]: Dieser Befehl ist in der Lage, bei Misserfolg eine Ausnahme auszulösen. Weitere Informationen finden Sie unter Laufzeitfehler.
ErrorLevel wird bei Misserfolg auf 1 und bei Erfolg auf 0 gesetzt.
ControlSendRaw sendet die Tastendrücke im Tasten-Parameter, ohne z. B. {Enter}
in Enter, ^c
in Strg+C usw. zu übersetzen. Weitere Informationen finden Sie unter Raw-Modus. {Raw} oder {Text} kann auch in Verbindung mit ControlSend genutzt werden. [v1.1.27+]: Der Text-Modus ist zum Senden von Text eventuell zuverlässiger.
Wenn der Steuerelement-Parameter weggelassen wird, versucht dieser Befehl, die Tastatureingaben entweder an das oberste Steuerelement (welches oft das Richtige ist) oder, falls keine Steuerelemente vorhanden sind, an das Fenster selbst zu senden. Diese Vorgehensweise ist nützlich, wenn das Fenster den Eindruck erweckt, als hätte es keine Steuerelemente, oder um sich keine Gedanken darüber machen zu müssen, welchem Steuerelement die Tastatureingaben gesendet werden sollen.
Standardmäßig werden Modifikatortastendrücke (Strg, Alt, Umschalt und Win) so gesendet, wie man es vom Send-Befehl gewohnt ist. Dadurch können Konsolenfenster wie die Windows-Eingabeaufforderung großgeschriebene Buchstaben, Steuerungszeichen und so weiter korrekt erkennen. Dies könnte die Zuverlässigkeit auch in anderen Bereichen verbessern.
In einigen Fällen können diese Modifikator-Ereignisse jedoch das aktive Fenster stören, insbesondere wenn der Benutzer während eines ControlSends aktiv schreibt oder wenn Alt gesendet wird (da Alt die Menüleiste des aktiven Fensters aktiviert). Das folgende Beispiel zeigt, wie man das verhindern kann, indem man explizit Up- und Down-Ereignisse des Modifikators sendet:
ControlSend, Edit1, {Alt down}f{Alt up}, Unbenannt - Editor
Die Methode oben erlaubt auch das Senden von Modifikatortastendrücke (Strg, Alt, Umschalt und Win), während der Arbeitsplatz gesperrt ist (bzw. durch die Anmeldeaufforderung geschützt ist).
Auf BlockInput sollten Sie verzichten, wenn Sie ein Konsolenfenster wie die Windows-Eingabeaufforderung als Ziel für ControlSend festlegen. BlockInput kann dazu führen, dass die Groß-/Kleinschreibung und Modifikatortasten wie Strg nicht ordnungsgemäß funktionieren.
Die Geschwindigkeit, mit welcher die Tasten gesendet werden, wird durch SetKeyDelay beeinflusst. Wenn die Tastendrücke unzuverlässig an das Zielfenster gesendet werden, können Sie versuchen, die Druckdauer mithilfe des zweiten Parameters von SetKeyDelay zu erhöhen:
SetKeyDelay, 10, 10 SetKeyDelay, 0, 10 SetKeyDelay, -1, 0
Wenn es sich bei dem Zielsteuerelement um ein Edit-Steuerelement (oder ähnliches) handelt, sind die folgenden Vorgehensweisen in der Regel zuverlässiger und schneller als ControlSend:
Control, EditPaste, Dieser Text wird an der Position des Textcursors eingefügt., Steuerelementname, FensterTitel
ControlSetText, Dieser Text ersetzt vollständig den aktuell vorhandenen Text., FensterTitel
In der Regel kann ControlSend die Menüleiste eines Fensters nicht manipulieren. Um das zu umgehen, können Sie WinMenuSelectItem verwenden. Sollte dies aufgrund der Beschaffenheit der Menüleiste nicht funktionieren, können Sie stattdessen versuchen, die Meldung des gewünschten Menüpunkts mithilfe des SendMessage-Tutorials herauszufinden.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
SetKeyDelay, Escapesequenzen (z. B. `%), Control, ControlGet, ControlGetText, ControlMove, ControlGetPos, ControlClick, ControlSetText, ControlFocus, Send, Winamp automatisieren
Öffnet den Texteditor im minimierten Zustand und sendet ihm etwas Text. Dieses Beispiel kann unter Windows 11 oder höher fehlschlagen, da es die klassische Version vom Texteditor erfordert.
Run, Notepad,, Min, PID ; Öffnet den Texteditor im minimierten Zustand. WinWait, ahk_pid %PID% ; Wartet darauf, bis es erscheint. ; Sendet den Text an das Edit-Steuerelement des inaktiven Texteditors. ; Der dritte Parameter wurde weggelassen, um das zuletzt gefundene Fenster zu verwenden. ControlSend, Edit1, Dies ist eine Textzeile im Texteditor.{Enter} ControlSendRaw, Edit1, Man beachte`, dass {Enter} nicht als Enter-Tastendruck gesendet wurde. Msgbox Drücken Sie OK, um das Fenster zu aktivieren und die Ergebnisse zu sehen. WinActivate, ahk_pid %PID% ; Zeigt die Ergebnisse an.
Öffnet die Windows-Eingabeaufforderung und sendet ihr etwas Text. Dieses Beispiel kann unter Windows 11 oder höher fehlschlagen, da es die klassische Version der Eingabeaufforderung erfordert.
SetTitleMatchMode, 2 Run, %A_ComSpec%,,, PID ; Startet die Eingabeaufforderung. WinWait, ahk_pid %PID% ; Wartet darauf, bis es erscheint. ControlSend,, ipconfig{Enter}, cmd.exe ; Sendet Tasten direkt an die Eingabeaufforderung.
Erstellt eine GUI mit einem Eingabefeld und sendet ihr etwas Text.
Gui, Add, Edit, r10 w500 Gui, Show Gui, +LastFound ; Der dritte Parameter wurde weggelassen, um das zuletzt gefundene Fenster zu verwenden. ControlSend, Edit1, Dies ist eine Textzeile im Eingabefeld.{Enter} ControlSendRaw, Edit1, Man beachte`, dass {Enter} nicht als Enter-Tastendruck gesendet wurde.