本发明涉及数据可视化技术领域,尤其涉及一种在大屏可视化系统中高效集成第三方应用程序的方法。
背景技术:
在各个行业大屏数据可视化方案中,时常会有部分需求需要在其可视化系统中嵌入第三方应用程序。例如在某个订制了一套酷炫的3d程序用于某个板块的数据可视化展示案例中,客户希望将该3d程序嵌入到2d的可视化系统中提升展示效果,又例如某行业希望在可视化系统中使用一套第三方的视频会议程序。
在国家专利申请说明书,cn102915251a中公开了一种多页面浏览器处理消息的方法和装置,该发明包括:为浏览器的每一个页面窗口创建一个无运算的宿主窗口;建立所述宿主窗口与其对应的页面窗口之间的父子关系以及所述宿主窗口与所述浏览器的主窗口之间的父子关系;将对所述主窗口的操作产生的消息同步给所述宿主窗口,并由所述宿主窗口将所述消息同步给所述页面窗口;在监控到所述页面窗口出现假死状态时,隔绝所述宿主窗口与所述页面窗口之间的父子关系。
该发明简单的采用父子关系的方式来进行多页面浏览器消息处理,类似的目前较为普遍的第三方程序集成方案中,一般采用传统的windowsapi中的setparent方法来进行简单的第三方程序窗口嵌入,但是setparent方法存在致命的缺陷:在某些时候会阻塞消息循环,而且经过一部分第三方软件嵌入测试,这种缺陷一般表现为主程序卡顿、假死。
技术实现要素:
本发明的目的在于提供一种在大屏可视化系统中高效集成第三方应用程序的方法,从而解决现有技术中采用windowsapi的setparent方法来进行简单的第三方程序窗口嵌入会导致主程序卡顿或假死的问题。
为了实现上述目的,本发明采用的技术方案如下:
一种在大屏可视化系统中高效集成第三方应用程序的方法,包括步骤:
s1)启动主程序,对主程序窗口状态进行监视;
s2)利用主程序对内部所有的进程容器进行解析,分别启动与所述进程容器对应的第三方应用程序;
s3)启动一个监视线程,所述监视线程用于监视第三方进程列表;
s4)对第三方进程窗口进行抓取,将成功抓取到的第三方进程窗口作为第三方进程主窗口,获取进程信息,将进程信息加入第三方进程列表;
s5)设置第三方进程窗口的窗口样式;
s6)设置第三方进程窗口大小;
s7)设置第三方进程窗口位置;
s8)将成功抓取到的第三方进程窗口强制设置为置顶;
s9)将第三方进程窗口的显隐状态设置成与主程序窗口同步。
步骤s4)中对第三方进程窗口进行抓取即执行一个抓取第三方进程主窗口的逻辑,本发明可以不断丰富该逻辑,甚至自定义该逻辑,目的是抓取想要的第三方进程窗口。
进一步的,步骤s1)中所述主程序窗口状态包括:主程序窗口的大小、位置和显示隐藏状态。
进一步的,步骤s1)中对主程序窗口状态进行监视,包括步骤:
s11)判断主程序窗口的大小是否变化,若是,执行步骤s6),若否,则继续对主程序窗口状态进行监视;
s12)判断主程序窗口的位置是否变化,若是,执行步骤s7),若否,则继续对主程序窗口状态进行监视;
s13)判断主程序的主窗口显示隐藏是否变化,若是,执行步骤s9),若否,则继续对主程序窗口状态进行监视。
进一步的,步骤s2)中利用主程序对内部的进程容器进行解析,每个进程容器对应启动一个已设置好的第三方进程,多个进程容器同时启动。
进一步的,步骤s3)中启动一个监视线程,包括步骤:
s31)判断第三方进程列表中第三方进程窗口的大小是否变化,若是,执行步骤s6),若否,则重复本步骤;
s32)判断第三方进程列表中第三方进程窗口的位置是否变化,若是,执行步骤s7),若否,则重复本步骤;
s33)判断第三方进程列表中第三方进程窗口显示隐藏是否变化,若是,执行步骤s9),若否,则重复本步骤;
s34)判断第三方进程列表中第三方进程窗口z序是否变化,若是,执行步骤s8),若否,则重复本步骤;
s35)判断第三方进程列表中第三方进程窗口样式是否发生变化,若是,则执行步骤s5),若否,则重复本步骤;
s36)判断第三方进程列表中三方窗口是否变化,若是,则执行步骤s4),若否,则重复本步骤;
s37)判断第三方进程列表中三方程序是否假死,若否,则进入步骤s38);若是,则强制结束当前假死的第三方进程,并进入步骤s2),单独重新启动与当前假死的第三方进程对应的进程容器;
s38)判断每个进程容器启动第三方进程是否都成功,若否,则返回步骤s37),若是,则将与进程容器对应的第三方进程放入主程序的三方进程列表中。
窗口的z次序表明了重叠窗口堆中窗口的位置,这个窗口堆是按一个假象的轴定位的,这个轴就是屏幕向外延伸的z轴。z次序最上面的窗口覆盖所有其他的窗口,z次序最底层的窗口被所有其他的窗口覆盖。应用程序设置窗口在z次序中的位置是通过把它放在一个给定窗口的后面,或是放在窗口堆的顶部或底部。
进一步的,步骤s35)中窗口样式包括标题、边框和任务栏图标。
进一步的,步骤s6)中按进程容器在大屏可视化系统中布局的大小进行比例计算,获得大小比例计算结果,根据比例计算结果对第三方进程窗口的大小进行设置。
进一步的,步骤7)中按进程容器在大屏可视化系统中布局的坐标位置进行比例计算,获得位置比例计算结果,根据位置比例计算结果对第三方进程窗口的位置进行设置。
本发明的有益效果是:对三方窗口进行强制置顶让三方窗口浮动在可视化系统主程序窗口之上,并保证三方窗口位置、大小等状态与主窗口同步,从而达到“伪”嵌入。解决了第三方程序窗口嵌入大屏可视化系统中会导致主程序卡顿或假死的问题,对主程序窗口不会造成额外影响,具有高度的可靠性。
附图说明
图1是本发明实施例一的流程示意图。
图2是本发明实施例一的大屏可视化系统进程嵌入设计示意图。
图3是本发明实施例一的定制开发的视频监控程序嵌入可视化系统效果图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
实施例一,如图1所示,一种在大屏可视化系统中高效集成第三方应用程序的方法,一种在大屏可视化系统中高效集成第三方应用程序的方法,其特征在于,包括步骤:
s1)启动主程序,对主程序窗口状态进行监视,包括步骤:
s11)判断主程序窗口的大小是否变化,若是,执行步骤s6),若否,则继续对主程序窗口状态进行监视;
s12)判断主程序窗口的位置是否变化,若是,执行步骤s7),若否,则继续对主程序窗口状态进行监视;
s13)判断主程序的主窗口显示隐藏是否变化,若是,执行步骤s9),若否,则继续对主程序窗口状态进行监视。
主程序窗口状态包括:主程序窗口的大小、位置和显示隐藏状态。
s2)利用主程序对内部所有的进程容器进行解析,分别启动与所述进程容器对应的第三方应用程序,每个进程容器对应启动一个已设置好的第三方进程,多个进程容器同时启动。
在大屏可视化系统中,以进程容器的方式设置进程窗口的位置及大小。可以认为,一个进程容器就是大屏可视化系统中嵌入的一个进程。如图2所示,一个可视化系统中可以包含多个进程容器。进程容器就是可视化系统与第三方程序沟通的桥梁。
s3)启动一个监视线程,所述监视线程用于监视第三方进程列表,包括步骤:
s31)判断第三方进程列表中第三方进程窗口的大小是否变化,若是,执行步骤s6),若否,则重复本步骤;
s32)判断第三方进程列表中第三方进程窗口的位置是否变化,若是,执行步骤s7),若否,则重复本步骤;
s33)判断第三方进程列表中第三方进程窗口显示隐藏是否变化,若是,执行步骤s9),若否,则重复本步骤;
s34)判断第三方进程列表中第三方进程窗口z序是否变化,若是,执行步骤s8),若否,则重复本步骤;
s35)判断第三方进程列表中第三方进程窗口样式是否发生变化,若是,则执行步骤s5),若否,则重复本步骤;窗口样式包括标题、边框和任务栏图标。
s36)判断第三方进程列表中三方窗口是否变化,若是,则执行步骤s4),若否,则重复本步骤;
s37)判断第三方进程列表中三方程序是否假死,若否,则进入步骤s38);若是,则强制结束当前假死的第三方进程,并进入步骤s2),单独重新启动与当前假死的第三方进程对应的进程容器;
s38)判断每个进程容器启动第三方进程是否都成功,若否,则返回步骤s37),若是,则将与进程容器对应的第三方进程放入主程序的三方进程列表中。
s4)对第三方进程窗口进行抓取,将成功抓取到的第三方进程窗口作为第三方进程主窗口,获取进程信息,将进程信息加入第三方进程列表。对第三方进程窗口进行抓取即执行一个抓取第三方进程主窗口的逻辑,本发明可以不断丰富该逻辑,甚至自定义该逻辑,目的是抓取想要的第三方进程窗口。
s5)设置第三方进程窗口的窗口样式;
s6)按进程容器在大屏可视化系统中布局的大小进行比例计算,获得大小比例计算结果,根据比例计算结果对第三方进程窗口的大小进行设置。
s7)按进程容器在大屏可视化系统中布局的坐标位置进行比例计算,获得位置比例计算结果,根据位置比例计算结果对第三方进程窗口的位置进行设置。
s8)将成功抓取到的第三方进程窗口强制设置为置顶。
s9)将第三方进程窗口的显隐状态设置成与主程序窗口同步。
本发明中,通过利用大屏可视化系统着重展示、远程控制以及展示区域较为独立的特点,对三方窗口进行强制置顶让三方窗口浮动在可视化系统主程序窗口之上,并保证三方窗口位置、大小等状态与主窗口同步,从而达到“伪”嵌入。如图3所示,为某平台的定制视屏监控程序嵌入大屏可视化系统的效果图,本发明解决了第三方程序窗口嵌入大屏可视化系统中会导致主程序卡顿或假死的问题,对主程序窗口不会造成额外影响,且具有高度的可靠性。在实际项目运用中,本发明能够成功地进行ie、谷歌浏览器、ppt、u3d程序以及其它多种第三方程序嵌入,能够完成很多不同行业的可视化展示。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:
本发明通过利用大屏可视化系统着重展示、远程控制以及展示区域较为独立的特点,对三方窗口进行强制置顶让三方窗口浮动在可视化系统主程序窗口之上,并保证三方窗口位置、大小等状态与主窗口同步,从而达到“伪”嵌入。解决了第三方程序窗口嵌入大屏可视化系统中会导致主程序卡顿或假死的问题,对主程序窗口不会造成额外影响,具有高度的可靠性。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。