You need to enable JavaScript to run this app. Windows 10下如何用Python脚本实现PAYDAY 2聚焦时隐藏鼠标指针
优惠活动
大模型
产品
解决方案
定价
更多

Windows 10下如何用Python脚本实现PAYDAY 2聚焦时隐藏鼠标指针

Windows 10 下适配现有逻辑的鼠标光标控制实现

你写的基于win32gui判断前台窗口的基础逻辑可直接复用,结合Windows系统自带的光标控制API补充分支逻辑即可,同时需要避开系统API的特有机制坑点。

核心实现原理

Windows 提供的 ShowCursor 接口带有内部引用计数机制,不会直接将光标设置为“绝对显示/隐藏”状态:

  • 每次调用 ShowCursor(False),内部计数器值减1
  • 每次调用 ShowCursor(True),内部计数器值加1
  • 仅当计数器值小于0时,系统才会判定光标为隐藏状态
    如果在循环检测时无差别重复调用该接口,很容易出现计数器数值和预期状态不匹配的问题——比如切出游戏后光标依然隐藏,或切回游戏后光标依然显示。因此必须增加状态标记,仅在光标状态需要切换时才调用一次API。

分支逻辑实现步骤

  1. 预先定义全局状态变量,记录当前光标是否处于隐藏状态,避免重复触发API调用
  2. 检测到PAYDAY 2处于前台时:若当前光标未被隐藏,调用隐藏接口执行操作,同步更新状态标记
  3. 检测到前台窗口不是PAYDAY 2时:若之前光标已被隐藏,调用显示接口恢复光标,同步更新状态标记

可直接替换到你现有代码的完整示例:

import win32gui
import time
# 全局状态标记:记录当前光标是否为隐藏状态
cursor_hidden = False

# 持续循环检测前台窗口状态
while True:
    pycwnd = win32gui.GetForegroundWindow()
    current_win_title = win32gui.GetWindowText(pycwnd)
    # 优化为包含判断,避免MOD加载、版本号变更导致窗口标题变化时检测失效
    is_payday_foreground = "PAYDAY 2" in current_win_title

    # 仅在状态发生切换时调用API,避免打乱引用计数
    if is_payday_foreground and not cursor_hidden:
        win32gui.ShowCursor(False)
        cursor_hidden = True
    elif not is_payday_foreground and cursor_hidden:
        win32gui.ShowCursor(True)
        cursor_hidden = False
    # 加简单延时降低CPU占用
    time.sleep(0.15)

常见踩坑提醒

  • 权限匹配:如果PAYDAY 2是通过管理员权限启动的,你的脚本也需要以同等管理员权限运行,否则系统会拦截光标控制指令,导致隐藏操作失效
  • 不要把循环检测的间隔设得过低,建议保留100~200ms的延时,避免无意义的资源占用

若遇到切出游戏后光标依然不显示的问题,只需要多次调用ShowCursor(True)把内部计数器拉回正数范围即可恢复,不需要重启系统。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 10:36:04