使用Win32 API实现按住右键时随机移鼠标的循环异常问题
问题解决:按住右键时随机移动鼠标的循环无法停止
你的代码核心问题是内层循环里没有实时更新鼠标右键的状态——一旦进入随机移动的循环,pressed变量就停留在右键按下时的数值,不会自动刷新,导致判断右键松开的条件永远触发不了,循环自然停不下来。
只需要在内层循环里每次重新获取按键状态,就能解决这个问题:
import win32api import pyautogui import random state = win32api.GetKeyState(0x02) # 右键按下为负数,松开为正数/0 while True: pressed = win32api.GetKeyState(0x02) if pressed != state: # 按键状态变化时更新记录 state = pressed print(pressed) if pressed < 0: print('Right Button Pressed') while True: # 每次循环都重新获取当前按键状态 pressed = win32api.GetKeyState(0x02) # 右键松开就退出随机移动循环 if pressed >= 0: break pyautogui.moveRel(random.randint(-10, 10), random.randint(-10, 10)) else: print('Right Button Released')
补充说明:win32api.GetKeyState返回的数值,右键按下时为负数(常见-128/-127),松开时为正数或0,用pressed >=0判断松开更稳妥。
内容的提问来源于stack exchange,提问作者Alexciao
相关产品推荐
相关产品推荐

