Glenn 发表于 2021-8-10 10:20

python win32api.keybd_event 模拟键盘按键的问题

有没有方法在 win32api.keybd_event模拟键盘按键时,使键盘的输入信号断开呢,因为我在使用的时候遇到一个问题:在模拟按下F1的时候,我键盘如果按着Ctrl,他就会发出Ctrl + F1 的信号,而不是F1

无闻无问 发表于 2021-8-10 10:57

第3个参数,设为KEYEVENTF_KEYUP松开按键

春天的萌动 发表于 2021-8-10 12:00

模拟开始之前,加一个先松开所有按键?

cmy2019 发表于 2021-8-10 14:14

看你的描述不会是想强制关闭实体键盘的输入功能吧?这样可太暴力了,绝对不是好的选择。
我觉得可以在模拟按键之前加个判断,如果当前有按下的键,弹窗提示用户释放所有按键,然后再执行你的按键模拟代码。

Glenn 发表于 2021-8-10 14:54

cmy2019 发表于 2021-8-10 14:14
看你的描述不会是想强制关闭实体键盘的输入功能吧?这样可太暴力了,绝对不是好的选择。
我觉得可以在模拟 ...

如何才能检测当前是否有按键按下呢?

Glenn 发表于 2021-8-10 15:20

本帖最后由 Glenn 于 2021-8-10 15:22 编辑

我目前遇到的困难是这样的:我使用ctypes.windll.user32模块注册快捷键,当我想变更快捷键的时候需要先释放快捷键,但是要想释放快捷键必须先结束他的快捷键监听状态user32.GetMessageA(ctypes.byref(msg), None, 0, 0)   这句代码使程序进入热键监听状态,必须要触发之前注册过的快捷键(我目前只知道这种方法)才能让他继续往下执行,通过判断释放快捷键的占用,所以我目前使用的方法是用win32api 模块模拟键盘按键去触发快捷键跳出释放快捷键后重新注册新的。但是有些问题,比如注册的是F1,想改成Ctrl + 1 ,她在模拟的触发F1的时候我可能还按着Ctrl,导致他模拟了Ctrl + F1 并不能触发监听,所以有没有啥方法,直接结束监听或者模拟不受键盘影响的键盘信号呢?

j542936 发表于 2021-8-11 13:03

本帖最后由 j542936 于 2021-8-11 13:13 编辑

是不是还是研究那个端游的
页: [1]
查看完整版本: python win32api.keybd_event 模拟键盘按键的问题