Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # coding: utf-8
- """
- Simple unicode keyboard automation for windows
- Based off of http://stackoverflow.com/questions/11906925/python-simulate-keydown
- """
- import ctypes
- import time
- import sys
- LONG = ctypes.c_long
- DWORD = ctypes.c_ulong
- ULONG_PTR = ctypes.POINTER(DWORD)
- WORD = ctypes.c_ushort
- INPUT_MOUSE = 0
- INPUT_KEYBOARD = 1
- INPUT_HARDWARE = 2
- KEYEVENTF_EXTENDEDKEY = 0x0001
- KEYEVENTF_KEYUP = 0x0002
- KEYEVENTF_SCANCODE = 0x0008
- KEYEVENTF_UNICODE = 0x0004
- class MOUSEINPUT(ctypes.Structure):
- _fields_ = (('dx', LONG),
- ('dy', LONG),
- ('mouseData', DWORD),
- ('dwFlags', DWORD),
- ('time', DWORD),
- ('dwExtraInfo', ULONG_PTR))
- class KEYBDINPUT(ctypes.Structure):
- _fields_ = (('wVk', WORD),
- ('wScan', WORD),
- ('dwFlags', DWORD),
- ('time', DWORD),
- ('dwExtraInfo', ULONG_PTR))
- class HARDWAREINPUT(ctypes.Structure):
- _fields_ = (('uMsg', DWORD),
- ('wParamL', WORD),
- ('wParamH', WORD))
- class _INPUTunion(ctypes.Union):
- _fields_ = (('mi', MOUSEINPUT),
- ('ki', KEYBDINPUT),
- ('hi', HARDWAREINPUT))
- class INPUT(ctypes.Structure):
- _fields_ = (('type', DWORD),
- ('union', _INPUTunion))
- def send_input(*inputs):
- nInputs = len(inputs)
- LPINPUT = INPUT * nInputs
- pInputs = LPINPUT(*inputs)
- cbSize = ctypes.c_int(ctypes.sizeof(INPUT))
- return ctypes.windll.user32.SendInput(nInputs, pInputs, cbSize)
- def input_structure(structure):
- if isinstance(structure, MOUSEINPUT):
- return INPUT(INPUT_MOUSE, _INPUTunion(mi=structure))
- if isinstance(structure, KEYBDINPUT):
- return INPUT(INPUT_KEYBOARD, _INPUTunion(ki=structure))
- if isinstance(structure, HARDWAREINPUT):
- return INPUT(INPUT_HARDWARE, _INPUTunion(hi=structure))
- raise TypeError('Cannot create INPUT structure!')
- def keyboard_input(code, flags):
- return KEYBDINPUT(0, code, flags, 0, None)
- def keyboard_event(code, flags=KEYEVENTF_UNICODE):
- return input_structure(keyboard_input(code, flags))
- def press(character):
- code = ord(character)
- code = ctypes.windll.user32.MapVirtualKeyW(code, 0)
- send_input(keyboard_event(code, KEYEVENTF_SCANCODE))
- send_input(keyboard_event(code, KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP))
- s = u'529367770827761809281925381945823314415654883200956546562119403749694799090814703264634710691547582753945986231555502753441533398291527365851914648618152088022990467703916209393932319280164651806605296243521499048284875309EINFGEXCRWIYJFDVTMPABOVJKUQVTFZTQKNCLBAPYDFRONCEFXEZHXDERFKGQDHCHZRJUHIMIKOLAVOVTCEFKUPTXXJSFWBDVWVVCPZZODXLGSPJTFDCHPHXBBBDCZRFLWQJIXEJNQOHZIHWVINZWFNFHDSXEVPJAGCEWLEMCMKETQAAUHUXBLCNUDQOOVGNZARDBNMGJYBLHBYAYWDABDYLDXJRBY5PZNCGY0JH442PAYQVL0EN97NZ6P8LKIL3XTZT5R7BPUBHR8PFUSQ3EQO0WY4CN58XB6A9XWPUEM5TA4FXF4F17SFKEMI93TWWXRBJY6E2K4GG8FM566NVZMRMMY18NSITHSRMJRYZ2DBRZVD8KPXXR645R5QOQEGM3PMXZJ5OIXCOIOOMSPOP9GDL7079AQB4C6WQ9P6E9PPF7Q9P5Z7CDEHM4E2O'
- def main():
- time.sleep(3)
- for char in s:
- press(char)
- #time.sleep(0.05)
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement