应用投屏时,选择了PPT窗口进行投屏后,如果此时用户点击了播放幻灯片,此时是创建了一个新的窗口,此时远端播放的还是之前的窗口。
需求:播放后需要切换到PPT幻灯片放映窗口
PPT编辑窗口 | PPT放映窗口 | |
---|---|---|
exe名称 | wpp.exe(wps) | wpp.exe(wps) |
窗口属性 | WS_POPUP 无控制按钮 | |
窗口标题 | 1.pptx - WPS 演示(wps) | WPS演示 幻灯片放映 - [1.pptx] (WPS) |
大小 | 可变化 | 全屏 |
获取当前窗口exe名称,枚举所有窗口,如果不存在第二个exe名称相同的窗口,则认为未开始放映,
如果找到了,是否全屏,然后判断窗口属性是否存在WS_MINIMIZEBOX、WS_MAXIMIZEBOX,如果存在则不是,如果不存在继续判断是否存在POPUP属性,如果是,就找到这个HWND了
还可以监听ABN_FULLSCREENAPP消息,来判断是否有全屏窗口开关
ABN_FULLSCREENAPP监听需要从任务栏接收,如果隐藏任务栏中的显示,会无法收到
选择窗口投屏后,判断是不是PPT或wps,如果是,判断是否是播放窗口,如果是,直接投屏,监听到关闭时切回编辑窗口;如果不是,判断是否存在播放窗口,存在时,投屏;不存在时,开启线程监听播放窗口,监听到时,线程退出,投屏更换窗口,退出时,切换到编辑窗口