CN110909282A - 一种Windows平台网页中嵌入桌面窗口的方法 - Google Patents
一种Windows平台网页中嵌入桌面窗口的方法 Download PDFInfo
- Publication number
- CN110909282A CN110909282A CN201911225533.9A CN201911225533A CN110909282A CN 110909282 A CN110909282 A CN 110909282A CN 201911225533 A CN201911225533 A CN 201911225533A CN 110909282 A CN110909282 A CN 110909282A
- Authority
- CN
- China
- Prior art keywords
- window
- webpage
- application program
- web page
- windows
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9577—Optimising the visualization of content, e.g. distillation of HTML documents
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
一种Windows平台网页中嵌入桌面窗口的方法,属于计算机技术领域。包括以下步骤:1、启动应用程序;2、网页与应用程序建立连接;3、网页发送创建窗口命令给应用程序,要求其在指定的区域创建业务窗口;4、应用程序收到命令后找到承载网页的窗口,然后在该窗口中网页指定的区域创建业务窗口,回送创建结果给网页;5、当网页窗口大小发生变化、滚动条位置变化、页面布局变化时通知应用程序进行对应调整;6、网页关闭时通知应用程序销毁业务窗口相应资源。通过本发明实现了在浏览器中嵌入桌面应用窗口的功能,并且兼容大部分浏览器,减少了开发各种浏览器控件的成本。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种Windows平台网页中嵌入桌面窗口的方法。
背景技术
当网页需要嵌入本地桌面窗口进行展示时,特别是想要同时支持多种浏览器的情况下,实现难度非常大,对开发人员的要求也非常高,主要问题归纳如下:
1、不同内核的浏览器需要开发相应的版本
目前市场上浏览器有Chrome、FireFox、Opera、Edge、IE等,每种浏览器控件开发的API都不一样,比如IE的ActiveX、Chrome的PPAPI、FireFox的NPAPI等,而产品如果需要同时支持多种浏览器,则需要针对每种浏览器都开发相对应的控件。
2、浏览器版本升级导致冲突
为了使用浏览器的新特性,我们时常需要升级浏览器版本,浏览器升级时可能会发生变化:比如Chrome表示到2020年底将不再支持flash、Chrome42版本已陆续不支持NPAPI插件等,这些都有可能导致我们的产品比须跟着升级才能继续使用。
3、配置繁琐,用户要求高
浏览器使用控件时都有一堆的配置需要用户进行修改,稍有差错就有可能导致控件不能正常运行,有时由于某些原因而导致浏览器配置被重置,需要重新配置,对用户的要求比较高。
为此,我们提出一种Windows平台网页中嵌入桌面窗口的方法,解决上述问题。
发明内容
本发明提供了一种Windows平台网页中嵌入桌面窗口的方法,解决了Windows平台下浏览器控件开发过程中由于浏览器种类繁多、浏览器升级冲突、配置繁琐带来的问题。
为了实现上述目的,本发明的技术方案,包括以下步骤:
启动应用程序,启动方式包含浏览器启动、开机启动、手动启动3种;
网页定时与应用程序建立连接,直到成功连接或网页关闭为止;
网页发送创建窗口命令给应用程序,要求在指定的区域创建窗口,网页发送的命令中包含网页title、窗口大小、屏幕坐标、窗口创建区域等信息;
应用程序收到指令后枚举所有系统窗口,先根据网页title、窗口大小、屏幕坐标等信息查找浏览器窗口,对于所有标签页共用一个窗口的浏览器(Chrome、FireFox、Edge等),浏览器窗口即为网页承载窗口(以下简称网页窗口),对于每个web页面一个窗口的浏览器(IE等),需要枚举浏览器窗口的所有可见子窗口,找到和窗口大小匹配的叶子窗口(没有子窗口的窗口),保存为网页窗口;
如果找不到浏览器窗口和网页窗口,则回送失败信息给网页,网页定期发送创建命令重试;
如果能找到浏览器窗口和网页窗口,则在网页指定的区域创建业务窗口,同时保存浏览器窗口、网页窗口和业务窗口等信息,同时回送创建结果给网页;
在创建业务窗口过程中,优先考虑WS_CHILD风格的子窗口,因为不需要考虑浏览器移动带来的位置调整,但不是所有浏览器都支持,再考虑WS_POPUP风格的子窗口,此时需要定时根据网页窗口的屏幕位置调整业务窗口的位置;
当网页窗口大小发生变化、滚动条位置变化、页面布局变化时通知应用程序对业务窗口的坐标、大小、可见区域进行对应调整;
当浏览器标签页切换时,网页通知应用程序对业务窗口进行显示或隐藏处理;
网页关闭时通知应用程序销毁业务窗口相应资源;
网页与应用程序连接断开时,应用程序销毁业务窗口相应资源;
优选地,应用程序定时判断网页窗口和业务窗口的有效性,防止资源残留;
优选地,为了使应用程序更为精准的查找和定位到网页窗口,网页发送的创建窗口命令中可包含浏览器类型、版本号等辅助信息;
优选地,创建业务窗口命令可以分两步进行:首先通过网页title、窗口大小、屏幕坐标等信息查找浏览器窗口和网页窗口,然后网页再发命令在网页窗口的指定区域创建业务窗口。
本发明的有益效果为:
1、本发明将桌面应用界面与网页进行进程隔离,使得应用程序的逻辑、展示均和网页无关,也和浏览器无关,无须为每种内核浏览器开发对应的控件,大部分浏览器(Chrome、FireFox、Edge、Opera、IE等)一套代码支持即可。
2、本发明没有使用传统API方式开发桌面控件,从而避免了浏览器升级可能会引起控件无法使用的问题。
3、本发明无须对浏览器进行配置,降低了用户使用门槛。
附图说明
图1是查找网页窗口的流程图;
图2是网页与桌面应用程序的交互过程图。
具体实施方式
本发明提供了一种Windows平台网页中嵌入桌面窗口的方法,其实现具体包括以下步骤:
1.选定网页和应用程序之间的通信机制为WebSocket,通信协议为json;
2.开机启动应用程序,并在指定或配置的端口(比如8088)监听本机连接;
3.网页加载时用WebSocket连接本机端口8088:
a)第一次连接失败,则通过浏览器启动应用程序,然后创建定时器,继续指定步骤3;
b)第二次及后续连接失败,则创建定时器,继续指定步骤3;
4.网页发送查找网页窗口命令给应用程序,携带网页title、屏幕坐标(window.screenLeft/ window.screenX、window.screenTop/window.screenY)、窗口大小(window.outerWidth、 window.outerHeight、window.innerWidth、window.innerHeight)、浏览器类型版本等信息;
5.应用程序收到命令后,先找到网页所在的浏览器窗口,再定位网页窗口,然后将信息保存并回送:
a)查找浏览器窗口
将网页title和浏览器类型组装为新的字符串,比如title为“测试网页3436”,浏览器为chrome,则组装的字符串为“测试网页3436 – Google Chrome”,用EnumWindows函数枚举所有系统窗口,将系统窗口的名称和组装字符串相比较:
i.如果没有匹配到,则将失败信息发送给网页,网页收到结果后启动定时器,继续执行步骤4;
ii.如果匹配上了,则获取该系统窗口的屏幕坐标和大小,和网页传递的屏幕坐标和大小(window.outerWidth、 window.outerHeight)进行比较:
1.如果全部都不匹配,则将匹配失败的消息发送给网页,网页收到结果后启动定时器,继续执行步骤4;
2.如果匹配上了,进入步骤5.b;
b)定位网页窗口
由于浏览器显示网页所使用的机制不一致,所以需要先找出网页窗口,才能创建业务窗口,浏览器显示机制分为以下2类:
i.所有标签页共用一个窗口,比如Chrome、FireFox、Edge等,此时浏览器窗口即为网页窗口,根据浏览器大小(window.outerWidth、 window.outerHeight、window.innerWidth、window.innerHeight)、浏览器类型版本信息计算网页body左上角到网页窗口左上角的偏移位置信息;
ii.每个网页单独子窗口,比如IE等,此时用EnumChildWindows函数枚举浏览器窗口下所有可见的子窗口,找出和浏览器大小(window.innerWidth、window.innerHeight)匹配的叶子窗口(其下没有子窗口),作为网页窗口,网页body左上角到网页窗口左上角的偏移位置均为0;
c)将浏览器窗口、网页窗口、偏移位置组合保存并建立索引信息,然后将索引号等结果回送给网页;
6.网页收到回复信息后,开始监听窗口大小改变οnresize事件、滚动条onscroll事件和标签页切换visibilitychange事件;
7.网页根据控件(例如div)来创建业务窗口,发送索引号、body边框(body.clientLeft、body.clientTop)和大小信息(body.offsetWidth、body.offsetHeight)、控件相对body的位置(div.offsetLeft、div.offsetTop)和大小(div.offsetWidth、div.offsetHeight)信息给应用程序,根据控件创建业务窗口的目的是使新建的业务窗口始终覆盖在该控件上,当控件的坐标或大小发生变化时立即发送命令给应用程序进行调整;
8.应用程序收到消息后,在指定坐标的基础上加上网页body相对网页窗口的偏移位置,用Create Window函数创建业务父子窗口,其中业务父窗口的父窗口为网页窗口,业务子窗口的父窗口为业务父窗口,同时按照步骤10对业务窗口大小和坐标进行调整,将浏览器窗口、网页窗口、业务窗口对应编号保存,然后将业务窗口编号、创建结果返回给网页,而创建业务窗口时用到的风格参数从配置文件中读取,建议配置如下:
a)对于类似Chrome、Edge的浏览器,创建WS_POPUP风格业务窗口;
b)对于类似FireFox浏览器,WS_POPUP和WS_CHILD风格都可以;
c)对于类似IE浏览器,创建WS_CHILD风格业务窗口;
9.当网页监测到窗口大小、滚动条、控件大小、坐标发生变化时,发送索引号、业务窗口编号、网页窗口大小、body边框和大小信息、控件相对body的位置和大小信息给应用程序;
10.应用程序收到命令后,对业务父子窗口的坐标和大小进行调整,使其展现位置和网页控件保持一致,其中业务子窗口用于显示业务信息,业务父窗口用于进行屏幕剪裁,比如:网页窗口大小为800*600,页面body高度为1000,滚动条位置为100,div的坐标为0/0,大小为200*200,此时页面上显示高度从100到700之间的数据,而div的高度为0到200,所以仅显示div高度100到200的部分,调整业务父窗口的坐标(相对body)为0/0,大小为200*100,业务子窗口的坐标(相对业务父窗口)为0/-100,大小为200*200,这样就保证了只显示业务子窗口的下半部分内容,如果业务窗口在显示区域外,则将业务窗口隐藏;
11.当网页检测到标签页切换时,发送索引号、业务窗口编号、显示/隐藏参数给应用程序;
12.应用程序收到命令后,进行处理:
a)隐藏命令,直接隐藏业务窗口;
b)显示命令,先判断业务窗口位置,如果在显示区域内,则显示,否则隐藏;
13.应用程序设置定时器,定期对WS_POPUP风格的业务窗口进行调整,获取其对应的网页窗口屏幕坐标,与上一个时钟获取的网页窗口屏幕坐标进行比较,实时调整业务窗口位置;
14.应用程序设置定时器,定期对网页窗口、业务窗口的有效性进行检查,当这些窗口无效时即时关闭对应资源;
15.网页关闭时通知应用程序销毁业务窗口相应资源。
Claims (10)
1.一种Windows平台网页中嵌入桌面窗口的方法,其特征在于,包括:
启动应用程序;
网页与应用程序建立连接;
网页发送创建窗口命令给应用程序,要求其在指定的区域创建业务窗口;
应用程序收到命令后找到承载网页的窗口,在该窗口中指定的区域创建业务窗口,然后回送创建结果给网页。
2.根据权利要求1所述的Windows平台网页中嵌入桌面窗口的方法,其特征在于,当网页承载窗口大小发生变化、滚动条位置变化、页面布局变化时通知应用程序进行对应调整。
3.根据权利要求1所述的Windows平台网页中嵌入桌面窗口的方法,其特征在于,创建的业务窗口风格包括WS_CHILD和WS_POPUP两种。
4.根据权利要求1所述的Windows平台网页中嵌入桌面窗口的方法,其特征在于,创建业务窗口过程可分为查找网页承载窗口和在网页承载窗口指定区域创建业务窗口两步,以便在同一网页中嵌入多个业务窗口时重用第一步。
5.根据权利要求1所述的Windows平台网页中嵌入桌面窗口的方法,其特征在于,启动应用程序包含浏览器启动、开机启动、手动启动和其他程序启动4种方式。
6.根据权利要求1所述的Windows平台网页中嵌入桌面窗口的方法,其特征在于,网页定期尝试与应用程序建立连接,直到成功连接或网页关闭为止。
7.根据权利要求1所述的Windows平台网页中嵌入桌面窗口的方法,其特征在于,网页关闭时通知应用程序销毁业务窗口相应资源。
8.根据权利要求1所述的Windows平台网页中嵌入桌面窗口的方法,其特征在于,应用程序定时判断网页承载窗口和业务窗口的有效性,防止资源残留。
9.根据权利要求1所述的Windows平台网页中嵌入桌面窗口的方法,其特征在于,网页发送的创建业务窗口命令中包含网页title、窗口大小、屏幕坐标信息。
10.根据权利要求1所述的Windows平台网页中嵌入桌面窗口的方法,其特征在于,为了使应用程序更为精准的定位到网页承载窗口,网页发送的创建窗口命令中可携带浏览器类型、版本信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911225533.9A CN110909282A (zh) | 2019-12-04 | 2019-12-04 | 一种Windows平台网页中嵌入桌面窗口的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911225533.9A CN110909282A (zh) | 2019-12-04 | 2019-12-04 | 一种Windows平台网页中嵌入桌面窗口的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110909282A true CN110909282A (zh) | 2020-03-24 |
Family
ID=69821985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911225533.9A Pending CN110909282A (zh) | 2019-12-04 | 2019-12-04 | 一种Windows平台网页中嵌入桌面窗口的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110909282A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022012586A1 (zh) * | 2020-07-14 | 2022-01-20 | 杭州海康威视数字技术股份有限公司 | 本地服务提供方法、装置及设备、存储介质 |
-
2019
- 2019-12-04 CN CN201911225533.9A patent/CN110909282A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022012586A1 (zh) * | 2020-07-14 | 2022-01-20 | 杭州海康威视数字技术股份有限公司 | 本地服务提供方法、装置及设备、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11170736B2 (en) | Preserving desktop state across login sessions | |
US20200401431A1 (en) | Adaptive web-based robotic process automation | |
CN106547534B (zh) | 展示页面扩展点的装置及方法 | |
WO2019072201A1 (zh) | 网页内容提取方法以及终端设备 | |
US20150370694A1 (en) | Automatic updating of graphical user interface element locators based on image comparison | |
US20060277248A1 (en) | Configuration-based application architecture using XML/XSLT | |
US20080228773A1 (en) | Apparatus and method for data input device | |
CN104536788B (zh) | 使应用的安装自动化的系统和方法 | |
EP1906305A2 (en) | Method and system for data preparation and communication between software applications | |
US20120317488A1 (en) | Techniques for adapting an interpretive run time application to multiple clients | |
CN109582890A (zh) | 页面加载方法、装置、计算机设备及存储介质 | |
CN110909282A (zh) | 一种Windows平台网页中嵌入桌面窗口的方法 | |
US10095528B2 (en) | Interfacing systems and methods | |
CN104601798B (zh) | 一种定制应用程序启动控制方法及装置 | |
CN109358943B (zh) | 页面配置方法及装置、电子设备、存储介质 | |
CN111008031A (zh) | 组件更新方法和装置、电子设备及计算机可读存储介质 | |
CN115687146A (zh) | Bios测试方法、装置、计算机设备和存储介质 | |
US10140143B2 (en) | Collection of guest status | |
US11550990B2 (en) | Machine first approach for identifying accessibility, non-compliances, remediation techniques and fixing at run-time | |
CN113268277A (zh) | 一种基于web的客户端访问方法及终端设备 | |
CN110109707B (zh) | 终端启动方法、装置及终端 | |
CN114003421A (zh) | 虚拟机超时机制测试方法、系统、终端及存储介质 | |
CN109960522B (zh) | 一种软件升级方法及装置 | |
CN115599451A (zh) | 多操作系统的引导启动方法及装置 | |
US10459748B2 (en) | Transparent guest based notification overlay |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |