Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.90 KB | None | 0 0
  1. Func KeySend($inkey, $evt ="pressed", $kdown = 50)
  2. $hwnd = $sgw
  3. $user32 = DllOpen("user32.dll")
  4. if $user32 = -1 Then
  5. _SendToConsole("KeySend: cannot open user32.dll")
  6. Exit
  7. EndIf
  8.  
  9. ; handling for special keys
  10. Switch StringUpper($inkey)
  11. Case "@"
  12. $skey = 0x40
  13. $lparam = 0x00100001
  14. DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", 0x71, "int", $lparam)
  15. DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_CHAR, "int", $skey, "int", $lparam)
  16. Sleep(20)
  17. DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", 0x71, "int", BitOR($lparam, 0xC0000000))
  18.  
  19. Case "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"
  20. $skey = 0x6f + Int(StringMid($inkey, 2))
  21. ContinueCase
  22. Case "NUM0", "NUM1", "NUM2", "NUM3", "NUM4", "NUM5", "NUM6", "NUM7", "NUM8" , "NUM9"
  23. if StringUpper(StringLeft($inkey, 3)) = "NUM" Then
  24. $skey = 0x60 + Int(StringMid($inkey, 4))
  25. EndIf
  26. ContinueCase
  27. Case "RETURN", "SPACE", "TAB", "BACK", "END", "HOME", "SNAPSHOT", "INSERT", "DELETE", "LEFT", "RIGHT", "UP", "DOWN", "CTRL"
  28. Switch StringUpper($inkey)
  29. case "CTRL"
  30. $key = 0xA2
  31. Case "RETURN"
  32. $skey = 0x0D
  33. Case "SPACE"
  34. $skey = 0x20
  35. Case "TAB"
  36. $skey = 0x09
  37. Case "BACK"
  38. $skey = 0x08
  39. Case "END"
  40. $skey = 0x23
  41. Case "HOME"
  42. $skey = 0x24
  43. Case "SNAPSHOT"
  44. $skey = 0x2c
  45. Case "INSERT"
  46. $skey = 0x2d
  47. Case "DELETE"
  48. $skey = 0x2e
  49. Case "LEFT"
  50. $skey = 0x25
  51. Case "RIGHT"
  52. $skey = 0x27
  53. Case "UP"
  54. $skey = 0x26
  55. Case "DOWN"
  56. $skey = 0x28
  57. EndSwitch
  58. $ret = DllCall($user32, "int", "MapVirtualKey", "int", $skey, "int", 0)
  59. $lparam = BitShift($ret[0], -16)
  60. $lparam = BitOr($lparam, 1)
  61. DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", $skey, "int", $lparam)
  62. Sleep($kdown)
  63. DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", $skey, "int", BitOR($lparam, 0xC0000000))
  64. Case Else ; default lower case key handling
  65. $key = DllCall($user32, "int", "VkKeyScan", "int", Asc(StringLower($inkey)))
  66. $skey = $key[0]
  67. $ret = DllCall($user32, "int", "MapVirtualKey", "int", $skey, "int", 0)
  68. $lparam = BitShift($ret[0], -16)
  69. $lparam = BitOr($lparam, 1)
  70. Select
  71. Case $evt = "pressed"
  72. DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", $skey, "int", $lparam)
  73. Sleep($kdown)
  74. DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", $skey, "int", BitOR($lparam, 0xC0000000))
  75. Case $evt = "down"
  76. DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", $skey, "int", $lparam)
  77. Case $evt = "up"
  78. DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", $skey, "int", BitOR($lparam, 0xC0000000))
  79. EndSelect
  80. EndSwitch
  81.  
  82. DllClose($user32)
  83. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement