Func SENDKEY($KEYTOSEND, $EVENT = "pressed", $DELAY = 100)
$USER32 = DllOpen("user32.dll")
If $USER32 = -1 Then
ConsoleWrite("SendKey: user32.dll konnte nicht geöffnet werden")
Exit
EndIf
Switch StringUpper($KEYTOSEND)
Case "@"
$SKEY = 64
$LPARAM = 1048577
DllCall($USER32, "int", "PostMessage", "hwnd", $HWND, "int", $WM_KEYDOWN, "int", 113, "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", 113, "long", BitOR($LPARAM, -1073741824))
Case "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"
$SKEY = 111 + Int(StringMid($KEYTOSEND, 2))
ContinueCase
Case "RETURN", "SPACE", "TAB", "BACK", "END", "HOME", "SNAPSHOT", "INSERT", "DELETE", "LEFT", "RIGHT", "UP", "DOWN"
Switch StringUpper($KEYTOSEND)
Case "SPACE"
$SKEY = 32
Case "RETURN"
$SKEY = 13
Case "BACK"
$SKEY = 8
Case "TAB"
$SKEY = 9
Case "HOME"
$SKEY = 36
Case "END"
$SKEY = 35
Case "UP"
$SKEY = 38
Case "SNAPSHOT"
$SKEY = 44
Case "DELETE"
$SKEY = 46
Case "LEFT"
$SKEY = 37
Case "INSERT"
$SKEY = 45
Case "RIGHT"
$SKEY = 39
Case "DOWN"
$SKEY = 40
Case "Z"
$SKEY = 122
Case "X"
$SKEY = 120
Case "T"
$SKEY = 116
Case "SUB"
$code = AscW("")
$SKEY =$code
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($DELAY)
DllCall($USER32, "int", "PostMessage", "hwnd", $HWND, "int", $WM_KEYUP, "int", $SKEY, "long", BitOR($LPARAM, -1073741824))
ContinueCase
Case "NUM0", "NUM1", "NUM2", "NUM3", "NUM4", "NUM5", "NUM6", "NUM7", "NUM8", "NUM9"
If StringUpper(StringLeft($KEYTOSEND, 3)) = "NUM" Then
$SKEY = 96 + Int(StringMid($KEYTOSEND, 4))
EndIf
Case Else
$KEY = DllCall($USER32, "int", "VkKeyScan", "int", Asc(StringLower($KEYTOSEND)))
$SKEY = $KEY[0]
$RET = DllCall($USER32, "int", "MapVirtualKey", "int", $SKEY, "int", 0)
$LPARAM = BitShift($RET[0], -16)
$LPARAM = BitOR($LPARAM, 1)
Select
Case $EVENT = "pressed"
DllCall($USER32, "int", "PostMessage", "hwnd", $HWND, "int", $WM_KEYDOWN, "int", $SKEY, "long", $LPARAM)
Sleep($DELAY)
DllCall($USER32, "int", "PostMessage", "hwnd", $HWND, "int", $WM_KEYUP, "int", $SKEY, "long", BitOR($LPARAM, -1073741824))
Case $EVENT = "down"
DllCall($USER32, "int", "PostMessage", "hwnd", $HWND, "int", $WM_KEYDOWN, "int", $SKEY, "long", $LPARAM)
Case $EVENT = "up"
DllCall($USER32, "int", "PostMessage", "hwnd", $HWND, "int", $WM_KEYUP, "int", $SKEY, "long", BitOR($LPARAM, -1073741824))
EndSelect
EndSwitch
DllClose($USER32)
EndFunc
|