Windows 检测PPT WPS 幻灯片播放并获取窗口句柄

需求背景:

应用投屏时,选择了PPT窗口进行投屏后,如果此时用户点击了播放幻灯片,此时是创建了一个新的窗口,此时远端播放的还是之前的窗口。
需求:播放后需要切换到PPT幻灯片放映窗口

实现步骤:

1、区分PPT幻灯片放映窗口和编辑窗口

PPT编辑窗口 PPT放映窗口
exe名称 wpp.exe(wps) wpp.exe(wps)
窗口属性 WS_POPUP 无控制按钮
窗口标题 1.pptx - WPS 演示(wps) WPS演示 幻灯片放映 - [1.pptx] (WPS)
大小 可变化 全屏

2、根据以上属性来找到PPT放映窗口

获取当前窗口exe名称,枚举所有窗口,如果不存在第二个exe名称相同的窗口,则认为未开始放映,
如果找到了,是否全屏,然后判断窗口属性是否存在WS_MINIMIZEBOX、WS_MAXIMIZEBOX,如果存在则不是,如果不存在继续判断是否存在POPUP属性,如果是,就找到这个HWND了

还可以监听ABN_FULLSCREENAPP消息,来判断是否有全屏窗口开关
ABN_FULLSCREENAPP监听需要从任务栏接收,如果隐藏任务栏中的显示,会无法收到

3、主流程

选择窗口投屏后,判断是不是PPT或wps,如果是,判断是否是播放窗口,如果是,直接投屏,监听到关闭时切回编辑窗口;如果不是,判断是否存在播放窗口,存在时,投屏;不存在时,开启线程监听播放窗口,监听到时,线程退出,投屏更换窗口,退出时,切换到编辑窗口

你可能感兴趣的:(C++)