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

Python实现左右鼠标同时按下下移鼠标时程序冻结问题如何解决

解决方案

核心原因

代码触发冻结和全屏失效有两个核心诱因:

  1. 无限循环无任何延时,短时间内高频调用系统输入API占满Windows输入事件队列,导致进程被系统阻塞
  2. 普通权限运行脚本时,Windows的用户界面特权隔离机制会阻止低权限进程向高权限全屏窗口发送输入事件,要么功能失效要么触发异常阻塞

修复方案

1. 给循环添加毫秒级延时

在循环末尾添加极短的休眠时间,避免占满CPU同时防止输入队列溢出,修改后可运行代码示例:

import win32api
import win32con
import time

while True:
    if win32api.GetAsyncKeyState(1) < 0 and win32api.GetAsyncKeyState(2) < 0:
        print("Both pressed")
        win32api.mouse_event(win32con.MOUSEEVENTF_MOVE, 0, 1, 0, 0)
        print("Move executed")
    # 1毫秒延时,可根据移动精度需求调整大小
    time.sleep(0.001)

2. 以管理员权限运行脚本

右键点击运行脚本的命令提示符/ Python脚本文件,选择「以管理员身份运行」,即可解决全屏应用场景下功能失效的问题。

3. 可选优化(避免重复状态触发)

如果需要区分按键按下/释放的状态切换,避免重复执行状态初始化逻辑,可以添加状态锁:

import win32api
import win32con
import time

press_state = False
while True:
    lmb_down = win32api.GetAsyncKeyState(1) < 0
    rmb_down = win32api.GetAsyncKeyState(2) < 0
    if lmb_down and rmb_down:
        if not press_state:
            print("Buttons pressed, start moving")
            press_state = True
        win32api.mouse_event(win32con.MOUSEEVENTF_MOVE, 0, 1, 0, 0)
    else:
        if press_state:
            print("Buttons released")
            press_state = False
    time.sleep(0.001)

内容的提问来源于stack exchange,提问作者Russell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:45:04