在 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.UINTi = 输入()
i.type = INPUT_KEYBOARD
i.ki = KEYBDINPUT(0,0x11,0,0,0)
lib.SendInput(1,byref(i),sizeof(INPUT))
正如对 SendInput 与 keybd_event 的评论所说,强调我的:
keybd_event 的一个大问题是你的事件可能会与真实的事件拼接。所以 SendInput 就是工作。 不知道为什么你会遇到问题。然而。
–
大卫·赫弗南
2013 年 9 月 6 日 16:50