Funktionreferenz


Send

Beschreibung anzeigen in

Sendet einen oder mehrere simulierte Tastendrücke an das aktive Fenster.

Send ( "keys" [, flag = 0] )

Parameter

keys Die Folge von Tastendrücken, die gesendet werden soll.
flag [optional] Kennzeichnet, wie der "keys"-Parameter verarbeitet wird:
    $SEND_DEFAULT (0) = Text beinhaltet spezielle Zeichen, wie „+“ und „!“, die für SHIFT- (=UMSCHALT) und ALT-Tasten stehen (Standard).
    $SEND_RAW (1) = Tasten ("keys") werden so wie angegeben gesendet.

Die Konstanten sind in "AutoItConstants.au3" definiert.

Rückgabewert

Keine.

Bemerkungen

Siehe Anhang für einige Tipps zur Verwendung von Send(). AutoIt kann alle ASCII und erweiterte ASCII Zeichen (0-255) senden. Um UNICODE Zeichen zu senden, muss die "ASC" Option mit dem Code des Zeichens, das gesendet werden soll, benutzt werden (siehe {ASC} am Ende der untenstehenden Tabelle).

Die Send() Befehlssyntax ist ähnlich dem von ScriptIt und Visual Basic verwendetem "SendKeys"-Befehl. Die Zeichen werden wie geschrieben gesendet, mit Ausnahme der folgenden Zeichen:

'!'
Dies weist AutoIt an, den ALT Tastendruck zu senden, folglich würde Send("Das ist ein Text!a") die Tastendrücke "Das ist ein Text" senden und dann die Tastendrücke "ALT+a".

Nebenbei sind einige Programme sehr empfindlich bezüglich Großbuchstaben und ALT-Taste, z.B. "!A" ist unterschiedlich zu "!a". Der erste Ausdruck bewirkt ALT+SHIFT+A, der zweite ist ALT+a. Im Zweifelsfall benutzt man die Kleinschreibung!

'+'
Dies weist AutoIt an, den SHIFT-(=UMSCHALT)-Tastendruck zu senden, folglich würde Send("Hell+o") den Text "HellO" senden. Send("!+a") würde "ALT+SHIFT+a" senden.

'^'
Dies weist AutoIT an, den CTRL (=STRG)-Tastendruck zu senden, folglich würde Send("^!a") "STRG+ALT+a" senden.

Bemerkung: Einige Programme reagieren sehr empfindlich auf Groß-/Kleinschreibung (Case sensitive) und STRG-Tastendrücke, z.B. ist "^A" unterschiedlich zu "^a". Der erste Ausdruck sendet STRG+SHIFT+A, der zweite sendet STRG+a. Im Zweifelsfall benutzt man die Kleinschreibung!

'#'
Die Hash (Raute oder Doppelkreuz)-Taste simuliert das Drücken der Windows-Taste. Folglich würde Send("#r") Win+r senden und damit die Run Dialogbox (Ausführen-Dialog) aufrufen.

Man kann "SendCapslockMode" so einstellen, dass die CAPSLOCK-Taste (FESTSTELLTASTE) beim Start einer Send() Funktion abgeschaltet wird und nach Beenden wieder zurückgesetzt wird.
Wenn aber ein Anwender die SHIFT-Taste beim Beginn einer Send() Funktion gedrückt hält, könnte der Text in Großbuchstaben gesendet werden.
Eine Vermeidungsmöglichkeit ist Send("{SHIFTDOWN}{SHIFTUP}") vor dem eigentlichen Send() Befehl zu senden.

Bestimmte Tastaturen, wie z.B. die tschechische, senden unterschiedliche Zeichen, je nachdem, ob die SHIFT- oder FESTSTELL-Taste betätigt ist. Nach der AutoIt-Arbeitsweise werden die Zeichen der FESTSTELL-Taste als SHIFT-Zeichen gesendet und deshalb kann dieses Verhalten nicht simuliert werden.

Bestimmte spezielle Tastendrücke müssen in geschweiften Klammern gesendet werden:

Wichtig : Windows verbietet das Senden der Tastenkombination "STRG-ALT-DEL"!

Send() Befehl (wenn Flag = 0) Resultierender Tastendruck
{!} !
{#} #
{+} +
{^} ^
{{} {
{}} }
{SPACE} SPACE (Leertaste)
{ENTER} Eingabetaste auf der Haupttastatur
{ALT} ALT
{BACKSPACE} oder {BS} BACKSPACE (Rücktaste)
{DELETE} oder {DEL} DELETE Entfernen (Entf)
{UP} Nach-Oben-Taste
{DOWN} Nach-Unten-Taste
{LEFT} Nach-Links-Taste
{RIGHT} Nach-Rechts-Taste
{HOME} HOME (Pos1 – Taste)
{END} END (Ende - Taste)
{ESCAPE} oder {ESC} ESCAPE- Taste
{INSERT} oder {INS} INS (EINFÜGEN (Einfg)-Taste)
{PGUP} PageUp (Bild-Auf-Taste)
{PGDN} PageDown (Bild-Ab-Taste)
{F1} - {F12} Funktionstasten
{TAB} TAB (Tabulator – Taste)
{PRINTSCREEN} Druck-Taste
{LWIN} linke Windows Taste
{RWIN} rechte Windows Taste
{NUMLOCK on} NUMLOCK (Num)-Taste (on/off/toggle)
{CAPSLOCK off} CAPSLOCK-Taste (FESTSTELLTASTE) (on/off/toggle)
{SCROLLLOCK toggle} ROLLEN-Taste (on/off/toggle)
{BREAK} STRG+Break = STRG+UNTERBRECHUNG Taste
{PAUSE} PAUSE-Taste
{NUMPAD0} - {NUMPAD9} Ziffernblock 0-9 (Numpad = numerisches Tastenfeld)
{NUMPADMULT} Multiplizieren auf Numpad
{NUMPADADD} Addieren auf Numpad
{NUMPADSUB} Subtrahieren auf Numpad
{NUMPADDIV} Dividieren auf Numpad
{NUMPADDOT} Punkt (Komma) auf Numpad
{NUMPADENTER} Eingabe-Taste auf Numpad
{APPSKEY} Windows-Programm Taste
{LALT} Linke ALT-Taste
{RALT} Rechte ALT-Taste
{LCTRL} Linke STRG-Taste
{RCTRL} Rechte STRG-Taste
{LSHIFT} Linke Shift-Taste
{RSHIFT} Rechte Shift-Taste
{SLEEP} Computer PAUSE Taste
{ALTDOWN} Hält die ALT-Taste gedrückt, bis {ALTUP} gesendet wird
{SHIFTDOWN} Hält die SHIFT-Taste gedrückt, bis {SHIFTUP} gesendet wird
{CTRLDOWN} Hält die STRG-Taste gedrückt, bis {CTRLUP} gesendet wird
{LWINDOWN} Hält die linke Windows-Taste gedrückt, bis {LWINUP} gesendet wird
{RWINDOWN} Hält die rechte Windows-Taste gedrückt, bis {RWINUP} gesendet wird
{ASC nnnn} Sendet die ALT+nnnn ASCII-CODE-Tastenkombination
{BROWSER_BACK} Wählt den Browser-Button "Zurück"
{BROWSER_FORWARD} Wählt den Browser-Button "Vorwärts"
{BROWSER_REFRESH} Wählt den Browser-Button "Aktualisieren"
{BROWSER_STOP} Wählt den Browser-Button "Stop"
{BROWSER_SEARCH} Wählt den Browser-Button "Suche"
{BROWSER_FAVORITES} Wählt den Browser-Button "Favoriten"
{BROWSER_HOME} Startet den Browser und geht zur Startseite
{VOLUME_MUTE} Stellt Lautsprecher auf Stumm
{VOLUME_DOWN} Reduziert die Lautstärke
{VOLUME_UP} Vergrößert die Lautstärke
{MEDIA_NEXT} Wählt den nächsten Track im Media Player
{MEDIA_PREV} Wählt den vorhergehenden Track im Media Player
{MEDIA_STOP} Stoppt Media Player
{MEDIA_PLAY_PAUSE} Wiedergabe/Pause Media Player
{LAUNCH_MAIL} Startet die Standard-E-Mail-Anwendung
{LAUNCH_MEDIA} Startet den Media Player
{LAUNCH_APP1} Startet das Anwender-Programm 1
{LAUNCH_APP2} Startet das Anwender-Programm 2
{OEM_102} Entweder die "angle bracket" Taste oder die Backslash-Taste auf der RT 102-Tasten-Tastatur

Um z.B. den Wert A als ASCII-Code zu senden (man drückt ständig die ALT Taste und gibt am Nummernblock die Ziffern 065 ein):
    Send("{ASC 065}")

Es können auch mehrere verschiedene ASCII-Zeichen, mit einem Send-Befehl, an ein Control gesendet werden, z.B.
    Send("{ASC 067}{ASC 058}{ASC 092}") ; Sendet C:\ an das Control.

(wenn man einen zweistelligen ASCII-Code hat, muss eine 0 vorangestellt werden (z.B. 065), andernfalls wird die veraltete Codepage 437 verwendet.)

Um UNICODE Zeichen zu senden, gibt man den Code entweder dezimal oder in hex ein, als Beispiel ein chinesisches Zeichen:
    Send("{ASC 2709}") oder Send("{ASC 0xA95}")


Einzelne Tastendrücke können mehrfach wiederholt werden:
    Send("{DEL 4}")    ;Drückt 4 mal die DEL (Entf-) Taste
    Send("{S 30}")    ;Sendet 30 mal ein S
    Send("+{TAB 4}")    ;Drückt 4 mal SHIFT+TAB

Es wird keine Taste gesendet, wenn die Anzahl 0 ist, so dass die Anzahl programmgesteuert gesetzt werden kann:
    Send("{M " & $iCount & "}")    ;Drückt die M-Taste so oft wie dies in der $iCount Variable definiert wurde


Die Taste wird mindestens ein Mal gesendet, auch wenn als Zahl Null angegeben wird.

Um eine Taste gedrückt zu lassen:
    Send("{a down}")    ;Hält die Taste A gedrückt
    Send("{a up}")    ;Lässt die Taste wieder los

Um den Status der Capslock, Numlock oder Scrolllock Taste zu setzen:
    Send("{NumLock on}")    ;Schaltet die NumLock Taste ein
    Send("{CapsLock off}")    ;Schaltet die CapsLock Taste aus
    Send("{Scrolllock toggle}")    ;Ändert den Zustand der Scrolllock Taste (wenn die Taste eingeschaltet ist, wird sie ausgeschaltet bzw. umgekehrt)

Will man einen Zähler als Variable vordefinieren, dann benutzt man das so:
    $n = 4
    Send("+{TAB " & $n & "}")

Will man z.B. den ASCII-Code "A" vier Mal senden, dann probiert man das hier:
    $x = Chr(65)
    Send("{" & $x & " 4}")

Die LAPTOP-Taste "Fn" kann leider nicht simuliert werden.

Bemerkung: Wenn das Flag auf 1 gesetzt ist, dann sind die o.g. speziellen Prozeduren ausgeschaltet.
Dies ist sinnvoll, wenn man einen Text, der aus einer Variablen stammt, senden will und dieser Text exakt gleich gesendet werden soll.

Beispiel: Öffnet die Ordneroptionen (in der Systemsteuerung) und versucht folgendes:
Send("{TAB}") Springt zum nächsten Button oder nächster Checkbox, etc.
Send("+{TAB}") Springt zum vorhergehenden Button oder Checkbox, etc.
Send("^{TAB}") Springt zum nächsten WindowTab (bei einem Fenster mit mehreren TABs, z.B. Firefox)
Send("^+{TAB}") Springt zum vorhergehenden WindowTab.
Send("{SPACE}") Kann verwendet werden, um den Zustand einer Checkbox zu wechseln oder einen Button anzuklicken.
Send("{+}") Setzt einen Haken (Kreuz, etc.) in der Checkbox (wenn es eine “echte” Checkbox ist!!)
Send("{-}") Löscht den Haken (Kreuz, etc.) in der Checkbox
Send("{NumPadMult}") Klappt alle Ebenen einer Ordnerstruktur im Explorer (vom Typ SysTreeView32) auf.

Man benutzt die ALT-Taste auch, um Menüs/ Untermenüs zu steuern, zum Beispiel bei einem geöffneten NotePad:
Send("!d")     Sendet Alt+d, (öffnet im Notepad das Datei Menü).

Send("{DOWN}") Fährt runter im Menü.
Send("{UP}") Fährt rauf im Menü.
Send("{LEFT}") Fährt nach links in ein neues Menü oder öffnet ein Untermenü.
Send("{RIGHT}") Fährt nach rechts in ein neues Menü oder schließt ein Untermenü.


Wenn man ein Skript auf einem Remotecomputer durch ein Programm wie psexec (www.sysinternals.com) oder beyondexec (www.beyondlogic.org) ausführen lässt, ist es notwendig (insbesondere dann, wenn Tastendrücke an ein Programm gesendet werden sollen, das per Skript mittels Run() Funktion gestartet wird), ControlSend() oder ControlXXX-Funktionen zu benutzen, um eine direkte Kommunikation mit der Steuerung herzustellen. Der Send-Befehl, auch mit der Option Opt("SendAttachMode", 1), funktioniert hier nicht.
Um bessere Rechte auf dem Remote-Computer beim Senden zu haben, benutzt man den Modus -s.

Opt("SendKeyDelay",...) ändert die Länge der kurzen Pause zwischen gesendeten Tastenanschlägen.
Opt("SendKeyDownDelay",...) ändert die Zeitspanne, die eine Taste niedergehalten wird, bevor diese wieder freigegeben wird.
Wird "SendKeyDelay" und "SendKeyDownDelay" auf 0 gesetzt, so werden alle Verzögerungen beim senden von Tasten entfernt. Dies kann unter bestimmten Umständen notwendig sein, zum Beispiel wenn man mit ("#l") das System sperrt, um zu vermeiden, dass die WIN-Taste untengehalten wird.

Verwandte Funktionen

BlockInput, ControlSend, HotKeySet, SendAttachMode (Option), SendKeepActive, SendKeyDelay (Option), SendKeyDownDelay (Option), WinMenuSelectItem

Beispiel

Example()

Func Example()
    ; Simuliert die Tastenkombination Win + R um das Run-Fenster zu öffnen.
    Send("#r")

    ; Wartet maximal 10 Sekunden bis das Run-Fenster erscheint.
    WinWait("Run", "", 10)

    ; Simuliert die Eingabe 'notepad.exe' und drückt die 'ENTER' Taste.
    Send("notepad.exe{Enter}")

    ; Wartet maximal 10 Sekunden bis das Editorfenster erscheint.
    Local $hWnd = WinWait("[CLASS:Notepad]", "", 10)

    ; Simuliert die Eingabe des folgenden Strings und drückt die 'F5' Taste für Eingabe des Datums und der Uhrzeit in das Edit-Control des Editors.
    Send("Today's time/date is {F5}")

    ; Schließt das Editorfenster durch die Verwendung des von WinWait zurückgegebenen Handles.
    WinClose($hWnd)

    ; Nun erscheint eine Meldung mit der Frage, ob die Änderungen gespeichert werden sollen.
    ; Der Klassenname (classname) des Fenster lautet "#32770".
    ; Anschließend wird die "TAB"-Taste gedrückt um zum zweiten Button zu wechseln. Dieser wird automatisch durch drücken der "ENTER"-Taste betätigt, so dass die Datei nicht gespeichert wird.
    WinWaitActive("[CLASS:#32770]")
    Sleep(500)
    Send("{TAB}{ENTER}")
EndFunc   ;==>Example