环境
-
python: 3.12.1
-
Pymen: 1.13.1
-
python-pptx: 0.6.23
-
WPS演示: 12.1.0.16250
实现步骤
环境安装
pip install pymem
pip install python-pptx
获取PPT文件的总页数
这个功能实现比较简单,直接通过python-pptx库即可实现
# 获取 ppt 总页数
def get_ppt_total_page_count(ppt_file:str):
ppt = Presentation(ppt_file)
total_page_count = len(ppt.slides)
return total_page_count
获取PPT当前播放页索引
这个功能相对比较复杂,网上也没有找到相关的博客,基本都是如何提供python去修改ppt的
后来想了想,ppt播放时软件里肯定得记录这个页索引数吧,就想着试试用Cheat Engine这种内存地址数值查找工具找找看,结果还真给我找到了
CE查找PPT当前索引页的临时地址
首先播放PPT,然后打开CE找到 WPS演示 幻灯片放映 这个进程
比如现在播放的是PPT的第一页,那就在输入框中输入0
然后随便切到PPT的任意页,输入该页的索引后点击next scan
这样多重复几次这个操作,直到左侧结果栏中只剩下一个结果
找到PPT当前播放进度的固定地址
右键它点击Find out what accesses this address
弹出窗口后,随便切下PPT的播放进度,注意别把PPT播放完了关掉了
这样弹窗的结果栏中就会出现一些结果,随便找到一个mov命令的结果点击查看结果内容
记住ebx+20的+20,表示内存地址+0x20得到该用于表示PPT当前播放进度的临时变量
这个EBX的地址可以不用记住,复制即可
关闭该弹窗,勾上Hex,然后粘贴上EBX的地址,进行新一轮的查找