Habs jetzt nicht getestet, aber sollte funzen.
Code:
#include <WindowsConstants.au3>
Opt("WinTitleMatchMode", 3)
Global $client = "Neues Textdokument - Editor"
Global $hwnd = WinGetHandle($client)
KeySend("SLASH")
KeySend("w")
KeySend("SPACE")
KeySend("x")
KeySend("y")
KeySend("z")
KeySend("SPACE")
KeySend("H")
KeySend("a")
KeySend("l")
KeySend("l")
KeySend("o")
; send single keyboard event to non active window
; event = pressed, down, up
; kdown = key down delay
; note: supports only lower case keys + NUMx, Fx, some special keys and @
Func KeySend($inkey, $evt ="pressed", $kdown = 50)
$user32 = DllOpen("user32.dll")
if $user32 = -1 Then
ConsoleWrite("KeySend: cannot open user32.dll")
Exit
EndIf
; handling for special keys
Switch StringUpper($inkey)
Case "@"
$skey = 0x40
$lparam = 0x00100001
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", 0x71, "long", $lparam)
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_CHAR, "int", $skey, "long", $lparam)
Sleep(20)
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", 0x71, "long", BitOR($lparam, 0xC0000000))
Case "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"
$skey = 0x6f + Int(StringMid($inkey, 2))
ContinueCase
Case "NUM0", "NUM1", "NUM2", "NUM3", "NUM4", "NUM5", "NUM6", "NUM7", "NUM8" , "NUM9"
if StringUpper(StringLeft($inkey, 3)) = "NUM" Then
$skey = 0x60 + Int(StringMid($inkey, 4))
EndIf
ContinueCase
Case "RETURN", "SPACE", "TAB", "BACK", "END", "HOME", "SNAPSHOT", "INSERT", "DELETE","SLASH", "LEFT", "RIGHT", "UP", "DOWN"
Switch StringUpper($inkey)
Case "RETURN"
$skey = 0x0D
Case "SPACE"
$skey = 0x20
Case "TAB"
$skey = 0x09
Case "BACK"
$skey = 0x08
Case "END"
$skey = 0x23
Case "HOME"
$skey = 0x24
Case "SNAPSHOT"
$skey = 0x2c
Case "INSERT"
$skey = 0x2d
Case "DELETE"
$skey = 0x2e
Case "SLASH"
$skey = 0x2f
Case "LEFT"
$skey = 0x25
Case "RIGHT"
$skey = 0x27
Case "UP"
$skey = 0x26
Case "DOWN"
$skey = 0x28
EndSwitch
$ret = DllCall($user32, "int", "MapVirtualKey", "int", $skey, "int", 0)
$lparam = BitShift($ret[0], -16)
$lparam = BitOr($lparam, 1)
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", $skey, "long", $lparam)
Sleep($kdown)
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", $skey, "long", BitOR($lparam, 0xC0000000))
Case Else ; default lower case key handling
$key = DllCall($user32, "int", "VkKeyScan", "int", Asc(StringLower($inkey)))
$skey = $key[0]
$ret = DllCall($user32, "int", "MapVirtualKey", "int", $skey, "int", 0)
$lparam = BitShift($ret[0], -16)
$lparam = BitOr($lparam, 1)
Select
Case $evt = "pressed"
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", $skey, "long", $lparam)
Sleep($kdown)
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", $skey, "long", BitOR($lparam, 0xC0000000))
Case $evt = "down"
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", $skey, "long", $lparam)
Case $evt = "up"
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", $skey, "long", BitOR($lparam, 0xC0000000))
EndSelect
EndSwitch
DllClose($user32)
EndFunc