为什么我应该使用 SendInput 而不是鼠标和键盘事件?

问题描述 投票:0回答:1

在 Microsoft Learn 上查找如何使用 keybd_event 时,它说:

注意此功能已被取代。请改用 SendInput

但是当查看如何使用SendInput时,它看起来要复杂得多,即使有的话,也没有太多增益,即使它可以类似地处理鼠标和键盘。

例如:用最小的力气按下 Ctrl:

keybd_事件:

windll.user32.keybd_event(0x11,0,0,0)

sendInput 又需要 6 行,同时还调用一个非常相似的函数 KEYBDINPUT:

lib = WinDLL('user32')
lib.SendInput.argtypes = w.UINT,POINTER(INPUT),c_int
lib.SendInput.restype = w.UINT

i = 输入()
i.type = INPUT_KEYBOARD
i.ki = KEYBDINPUT(0,0x11,0,0,0)
lib.SendInput(1,byref(i),sizeof(INPUT))

python mouseevent ctypes keyboard-events sendinput
1个回答
0
投票

正如对 SendInput 与 keybd_event 的评论所说,强调我的:

keybd_event 的一个大问题是你的事件可能会与真实的事件拼接。所以 SendInput 就是工作。 不知道为什么你会遇到问题。然而。

大卫·赫弗南
2013 年 9 月 6 日 16:50

© www.soinside.com 2019 - 2024. All rights reserved.