Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Func KeySend($inkey, $evt ="pressed", $kdown = 50)
- $hwnd = $sgw
- $user32 = DllOpen("user32.dll")
- if $user32 = -1 Then
- _SendToConsole("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, "int", $lparam)
- DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_CHAR, "int", $skey, "int", $lparam)
- Sleep(20)
- DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", 0x71, "int", 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", "LEFT", "RIGHT", "UP", "DOWN", "CTRL"
- Switch StringUpper($inkey)
- case "CTRL"
- $key = 0xA2
- 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 "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, "int", $lparam)
- Sleep($kdown)
- DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", $skey, "int", 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, "int", $lparam)
- Sleep($kdown)
- DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", $skey, "int", BitOR($lparam, 0xC0000000))
- Case $evt = "down"
- DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", $skey, "int", $lparam)
- Case $evt = "up"
- DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", $skey, "int", BitOR($lparam, 0xC0000000))
- EndSelect
- EndSwitch
- DllClose($user32)
- EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement