总览
在某些场景下,针对某些应用,协议中的一些智能识别算法遇到瓶颈,分析准确度不佳时,可以通过对这些应用配置应用感知策略,针对该应用的画面或部分窗口,采用特殊的策略,比如视为视频进行压缩等措施,来提高此应用的用户体验效果。
流程
1、识别是否配置了该策略。
通过解析下发的协议策略,解析其中的应用感知部分,解析出对应的应用名及其对应的要使用的压缩算法。另外,在win10上配置某个窗口,需要使用到windows提供的spy++工具识别。
2、在启动时创建一个解析的线程,并将处理后的数据发送给主显示线程。
该线程主要是用于计算对应目标应用的遮挡区域,这对未遮挡的区域使用对应的配置好的算法。
1、使用SetWinEventHook,通过消息钩子钩住需要监控的消息,包括窗口创建、销毁、位置变换、大小改变等消息。
消息钩子:消息钩子能够在应用程序处理系统消息之前将其截获,提前处理并可以决定是否继续将消息往下传送
2、使用EnumWindows枚举整个桌面窗口,找到已经打开了的目标应用
3、执行消息循环,从系统中获取消息,再让系统派发给应用,此后在消息钩子中的事件回调函数中处理对应的消息。
4、事件回调函数处理。针对第一步消息钩子钩住的监控消息,来计算遮挡区域。
计算遮挡区域的方法:在目标窗口区域上,以一定的步长,计算某点(WindowFromPoint)上的窗口是否目标窗口,并且是否与目标窗口存在遮挡关系,计算完所有点后,累积目标窗口Z轴上方的遮挡区域。