You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:05:13