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

如何使用Python获取游戏中当前激活鼠标光标图标的文件路径?

可行解决方案

方案1:截图特征比对(通用性最高,实现最简单)

你遇到的空白位图问题本质是Flash自定义光标的实现逻辑导致的:Flash调用API禁用系统光标后,会自主在窗口上层绘制跟随鼠标坐标的UI元素作为自定义光标,你通过系统光标API拿到的是系统提供的透明占位光标,自然无法获取有效信息。
该方案适配所有自定义绘制光标的场景:

  • 用win32gui获取游戏窗口句柄,限定仅当鼠标处于该窗口范围内时触发检测逻辑
  • 固定截取当前鼠标坐标周围3232/6464像素(通用光标尺寸)的窗口画面,计算该截图的感知哈希值(dHash/pHash均可)
  • 提前采集该游戏所有状态下的光标截图建立哈希映射库,运行时比对哈希值即可快速识别当前光标状态,无需依赖动态句柄或本地内存地址,换机器也可正常使用。

方案2:解析游戏资源直接提取光标文件

如果需要获取原光标文件:
Flash游戏的所有资源都嵌入在.swf文件中,你可以用swfparse等Python库直接解析游戏的swf安装包,提取其中的所有光标位图资源,提前建立资源和对应状态的映射表,后续识别到光标状态后即可直接关联到对应的本地文件路径。

方案3:接口Hook(仅适合需要实时获取运行时资源的场景)

如果需要在游戏运行时直接拿到当前渲染的光标资源,可以用Frida等Hook框架挂钩Flash Player的Cursor.setBitmap()方法,该方法被调用时会传入当前要设置的自定义光标位图资源,直接读取参数即可拿到对应内容,不过该方案需要适配不同版本的Flash Player,通用性低于前两种方案。

补充说明

你之前比对的win32con中的IDC_*常量都是Windows系统默认光标的固定ID,应用动态加载的自定义光标本身就不会和这些常量匹配,比对无结果属于正常情况,该思路仅适用于识别系统默认光标,不适用于自定义绘制光标的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:18:04