Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
81
Task/Simulate-input-Keyboard/Nim/simulate-input-keyboard.nim
Normal file
81
Task/Simulate-input-Keyboard/Nim/simulate-input-keyboard.nim
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
when defined(windows):
|
||||
import winlean
|
||||
else:
|
||||
{.error: "not supported os".}
|
||||
|
||||
type
|
||||
InputType = enum
|
||||
itMouse itKeyboard itHardware
|
||||
KeyEvent = enum
|
||||
keExtendedKey = 0x0001
|
||||
keKeyUp = 0x0002
|
||||
keUnicode = 0x0004
|
||||
keScanCode = 0x0008
|
||||
|
||||
|
||||
MouseInput {.importc: "MOUSEINPUT".} = object
|
||||
dx, dy: clong
|
||||
mouseData, dwFlags, time: culong
|
||||
dwExtraInfo: int # ULONG_PTR
|
||||
|
||||
KeybdInput {.importc: "KEYBDINPUT".} = object
|
||||
wVk, wScan: cint
|
||||
dwFlags, time: culong
|
||||
dwExtraInfo: int
|
||||
|
||||
HardwareInput {.importc: "HARDWAREINPUT".} = object
|
||||
uMsg: clong
|
||||
wParamL, wParamH: cint
|
||||
|
||||
InputUnion {.union.} = object
|
||||
hi: HardwareInput
|
||||
mi: MouseInput
|
||||
ki: KeybdInput
|
||||
Input = object
|
||||
`type`: clong
|
||||
hwin: InputUnion
|
||||
|
||||
proc sendInput(total: cint, inp: ptr Input, size: cint) {.importc: "SendInput", header: "<windows.h>".}
|
||||
|
||||
proc initKey(keycode: int): Input =
|
||||
result = Input(`type`: itKeyboard.clong)
|
||||
var keybd = KeybdInput(wVk: keycode.cint, wScan: 0, time: 0,
|
||||
dwExtraInfo: 0, dwFlags: 0)
|
||||
result.hwin = InputUnion(ki: keybd)
|
||||
|
||||
proc pressKey(input: var Input) =
|
||||
input.hwin.ki.dwFlags = keExtendedKey.culong
|
||||
sendInput(cint 1, addr input, sizeof(Input).cint)
|
||||
|
||||
proc releaseKey(input: var Input) =
|
||||
input.hwin.ki.dwFlags = keExtendedKey.culong or keKeyUp.culong
|
||||
sendInput(cint 1, addr input, sizeof(Input).cint)
|
||||
|
||||
proc pressRelease(input: var Input) =
|
||||
input.pressKey
|
||||
input.releaseKey
|
||||
|
||||
proc pressReleaseKeycode(input: var Input, code: int) =
|
||||
input.hwin.ki.wVk = code.cint
|
||||
input.pressRelease
|
||||
|
||||
proc main =
|
||||
var
|
||||
shift = initKey 0xa0 # VK_LSHIFT
|
||||
key = initKey 0x48
|
||||
|
||||
pressKey shift
|
||||
pressRelease key
|
||||
releaseKey shift
|
||||
key.pressReleaseKeycode 0x45 # e key
|
||||
key.pressReleaseKeycode 0x4c # l key
|
||||
key.pressReleaseKeycode 0x4c # l key
|
||||
key.pressReleaseKeycode 0x4f # o key
|
||||
key.pressReleaseKeycode 0x20 # VK_SPACE
|
||||
key.pressReleaseKeycode 0x57 # w key
|
||||
key.pressReleaseKeycode 0x4f # o key
|
||||
key.pressReleaseKeycode 0x52 # r key
|
||||
key.pressReleaseKeycode 0x4c # l key
|
||||
key.pressReleaseKeycode 0x44 # d key
|
||||
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue