Guest User

Untitled

a guest
Jan 18th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. import ctypes
  2. import time
  3.  
  4. SendInput = ctypes.windll.user32.SendInput
  5.  
  6.  
  7. W=0x11
  8. A=0x1E
  9. S=0x1F
  10. D=0x20
  11. # C struct redefinitions
  12. PUL = ctypes.POINTER(ctypes.c_ulong)
  13. class KeyBdInput(ctypes.Structure):
  14. _fields_ = [("wVk", ctypes.c_ushort),
  15. ("wScan", ctypes.c_ushort),
  16. ("dwFlags", ctypes.c_ulong),
  17. ("time", ctypes.c_ulong),
  18. ("dwExtraInfo", PUL)]
  19.  
  20. class HardwareInput(ctypes.Structure):
  21. _fields_ = [("uMsg", ctypes.c_ulong),
  22. ("wParamL", ctypes.c_short),
  23. ("wParamH", ctypes.c_ushort)]
  24.  
  25. class MouseInput(ctypes.Structure):
  26. _fields_ = [("dx", ctypes.c_long),
  27. ("dy", ctypes.c_long),
  28. ("mouseData", ctypes.c_ulong),
  29. ("dwFlags", ctypes.c_ulong),
  30. ("time",ctypes.c_ulong),
  31. ("dwExtraInfo", PUL)]
  32.  
  33. class Input_I(ctypes.Union):
  34. _fields_ = [("ki", KeyBdInput),
  35. ("mi", MouseInput),
  36. ("hi", HardwareInput)]
  37.  
  38. class Input(ctypes.Structure):
  39. _fields_ = [("type", ctypes.c_ulong),
  40. ("ii", Input_I)]
  41.  
  42. # Actuals Functions
  43.  
  44. def PressKey(hexKeyCode):
  45. extra = ctypes.c_ulong(0)
  46. ii_ = Input_I()
  47. ii_.ki = KeyBdInput( 0, hexKeyCode, 0x0008, 0, ctypes.pointer(extra) )
  48. x = Input( ctypes.c_ulong(1), ii_ )
  49. ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))
  50.  
  51. def ReleaseKey(hexKeyCode):
  52. extra = ctypes.c_ulong(0)
  53. ii_ = Input_I()
  54. ii_.ki = KeyBdInput( 0, hexKeyCode, 0x0008 | 0x0002, 0, ctypes.pointer(extra) )
  55. x = Input( ctypes.c_ulong(1), ii_ )
  56. ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))
  57.  
  58. # directx scan codes http://www.gamespp.com/directx/directInputKeyboardScanCodes.html
  59. if __name__ == '__main__':
  60. while (True):
  61. PressKey(W)
  62. time.sleep(5)
  63. PressKey(A)
Add Comment
Please, Sign In to add comment