diff --git a/inputcontrol/controller_windows.go b/inputcontrol/controller_windows.go index ad0b283..58b5e9a 100644 --- a/inputcontrol/controller_windows.go +++ b/inputcontrol/controller_windows.go @@ -111,9 +111,11 @@ func (p *windowsController) sendInput(inputs []keybdInput) error { if len(inputs) == 0 { return nil } - _, _, err := sendInputProc.Call(uintptr(len(inputs)), - uintptr(unsafe.Pointer(&inputs[0])), unsafe.Sizeof(inputs[0])) - return err + if sent, _, err := sendInputProc.Call(uintptr(len(inputs)), + uintptr(unsafe.Pointer(&inputs[0])), unsafe.Sizeof(inputs[0])); int(sent) != len(inputs) { + return err + } + return nil } func (p *windowsController) KeyboardText(text string) error { @@ -194,8 +196,11 @@ func (p *windowsController) PointerButton(button PointerButton, press bool) erro } else { return fmt.Errorf("unsupported pointer button: %#v", button) } - _, _, err := sendInputProc.Call(1, uintptr(unsafe.Pointer(&input)), unsafe.Sizeof(input)) - return err + if sent, _, err := sendInputProc.Call(1, uintptr(unsafe.Pointer(&input)), + unsafe.Sizeof(input)); int(sent) != 1 { + return err + } + return nil } func (p *windowsController) PointerMove(deltaX, deltaY int) error { @@ -205,8 +210,11 @@ func (p *windowsController) PointerMove(deltaX, deltaY int) error { dy: int32(deltaY), dwFlags: mouseeventfMove, } - _, _, err := sendInputProc.Call(1, uintptr(unsafe.Pointer(&input)), unsafe.Sizeof(input)) - return err + if sent, _, err := sendInputProc.Call(1, uintptr(unsafe.Pointer(&input)), + unsafe.Sizeof(input)); int(sent) != 1 { + return err + } + return nil } func (p *windowsController) PointerScroll(deltaHorizontal, deltaVertical int, finish bool) error { @@ -228,7 +236,9 @@ func (p *windowsController) PointerScroll(deltaHorizontal, deltaVertical int, fi if len(inputs) == 0 { return nil } - _, _, err := sendInputProc.Call(uintptr(len(inputs)), - uintptr(unsafe.Pointer(&inputs[0])), unsafe.Sizeof(inputs[0])) - return err + if sent, _, err := sendInputProc.Call(uintptr(len(inputs)), + uintptr(unsafe.Pointer(&inputs[0])), unsafe.Sizeof(inputs[0])); int(sent) != len(inputs) { + return err + } + return nil }