在Python环境中,利用python-pptx库可以轻松实现获取WPS中PPT的文件总页数。然而,要获取当前播放进度则需要更为精细的操作。首先,尝试直接编程方法并未找到相关教程,这涉及到对PPT播放状态的底层操作,而内存地址查找工具Cheat Engine在此发挥了关键作用。启动Cheat Engine,首先确保WPS演示的幻灯片放映进程在...
【Python】基于内存地址获取WPS中ppt的当前播放进度
在Python环境中,利用python-pptx库可以轻松实现获取WPS中PPT的文件总页数。然而,要获取当前播放进度则需要更为精细的操作。首先,尝试直接编程方法并未找到相关教程,这涉及到对PPT播放状态的底层操作,而内存地址查找工具Cheat Engine在此发挥了关键作用。
启动Cheat Engine,首先确保WPS演示的幻灯片放映进程在运行。当播放到某一页时,通过输入对应的页码进行扫描,重复此过程直到结果栏中的数据稳定。此时,找到一个与PPT播放进度相关的mov命令,注意保持PPT的播放状态。
通过分析弹出窗口中的结果,发现临时变量的地址通常在ebx+20处,这个地址可能因人而异,需要根据具体情况进行调整。关闭窗口,选择Hex模式,复制并查找EBX地址附近的地址,继续查找mov命令。重复此过程,直到找到稳定的静态地址,即不会随着软件启动而变化的地址。
找到固定地址后,通过递归公式[[[player.dll + BA6EC] + 28] + 1C] + 20(这里的[]表示地址的值),结合pymem库,我们可以计算出存储当前播放进度的临时变量的准确位置。WPS的PPT可能有两个临时变量,一个存储实际进度,另一个始终为0,因此可以取这两个地址中较大的值作为当前播放索引。
至此,通过内存地址获取到的值就是当前的播放进度,结合总页数,就完成了对WPS PPT播放进度的监控。最后,将这些操作封装成函数,如使用log_utils进行日志记录,即可实现所需功能。这个方法在CSDN博客中也有相关案例可供参考。2024-09-13