CN103064747A - Wes7环境中不同web窗口页面间的通信方法 - Google Patents

Wes7环境中不同web窗口页面间的通信方法 Download PDF

Info

Publication number
CN103064747A
CN103064747A CN2012105386911A CN201210538691A CN103064747A CN 103064747 A CN103064747 A CN 103064747A CN 2012105386911 A CN2012105386911 A CN 2012105386911A CN 201210538691 A CN201210538691 A CN 201210538691A CN 103064747 A CN103064747 A CN 103064747A
Authority
CN
China
Prior art keywords
page
communication
unit
plug
activex plug
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
Application number
CN2012105386911A
Other languages
English (en)
Inventor
贾小波
张永强
赵付强
连毅
徐圆圆
刘飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZHENGZHOU VCOM TECHNOLOGY Co Ltd
Original Assignee
ZHENGZHOU VCOM TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZHENGZHOU VCOM TECHNOLOGY Co Ltd filed Critical ZHENGZHOU VCOM TECHNOLOGY Co Ltd
Priority to CN2012105386911A priority Critical patent/CN103064747A/zh
Publication of CN103064747A publication Critical patent/CN103064747A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

一种WES7环境中不同WEB窗口页面间的通信方法,采用ActiveX插件作为WEB窗口页面间通信中介实现页面通信功能,1)WEB窗口加载通信页面时,各页面同时加载ActiveX插件;2)页面1将页面2的标识及要发送的数据通过ActiveX插件开放的发送数据接口传递给页面1中的ActiveX插件,ActiveX插件通过查找页面与ActiveX插件通信窗口句柄映射表,找到页面2对应的ActiveX插件通信窗口句柄,然后以消息通知的方式将页面1要发送数据的位置告诉页面2的AcitveX插件;3)页面2的ActiveX插件收到消息后,根据消息中传递的数据位置提取数据,然后调用自身的事件通知接口,将数据上报给页面2的事件处理程序;4)页面2至页面1的反向通信过程按照同样的步骤进行。

Description

WES7环境中不同WEB窗口页面间的通信方法
技术领域
本发明涉及一种WES7操作系统中的通讯方法,特别是涉及一种WES7环境中不同WEB窗口页面间的通信方法。
背景技术
在Windows Embed Standard 7(简称WES7)操作系统环境中,位于不同WEB窗口的页面之间如何有效通信,到目前为止,一直没有现成的技术方案可用。因为终端设备中的浏览器不受WEB业务开发商的控制,所以通常情况下,WEB业务开发商都是基于单WEB窗口进行WEB业务和应用的设计和开发,这在一般情况下可以满足业务需求,但并不总能满足业务需求。例如“在页面内嵌非FlashPlayer类型播放器视频窗口上放置频道列表界面”这样的需求,就是单WEB窗口方式无法解决的,这是因为目前没有WEB理论和相关技术支持普通WEB元素可以覆盖在页面插件内建的窗口之上。这时若采用两个WEB窗口,一个作为播放页面窗口,另一个作为频道列表窗口并控制好窗口尺寸和显示层次关系,就可以很好的解决显示覆盖问题。而这种方案下需要解决的关键问题就是WEB窗口之间如何进行数据通信以实现WEB页面之间的统一调度。目前,尚未发现可用于解决多窗口WEB页面之间通信的技术和成功案例,无法有效的解决这一问题。
发明内容
本发明针对现有技术不足,提出一种WES7环境中不同WEB窗口页面间的通信方法,可以实现两个独立的浏览器窗口页面之间的双向通讯和控制,从而突破了页面数据通讯和控制能力只能局限在浏览器窗口内的限制。
本发明所采用的技术方案:
一种WES7环境中不同WEB窗口页面间的通信方法,采用ActiveX插件作为WEB窗口页面间通信中介实现页面通信功能,为WEB页面间数据通信提供支撑:
1)WEB窗口加载通信页面时,各页面同时加载ActiveX插件,并告诉ActiveX插件该加载通信页面对应的标识;
2)页面1将页面2的标识及要发送的数据通过ActiveX插件开放的发送数据接口传递给页面1中的ActiveX插件,ActiveX插件通过查找页面与ActiveX插件通信窗口句柄映射表,找到页面2对应的ActiveX插件通信窗口句柄,然后以消息通知的方式将页面1要发送数据的位置告诉页面2的AcitveX插件;
3)页面2的ActiveX插件收到消息后,根据消息中传递的数据位置提取数据,然后调用自身的事件通知接口,将数据上报给页面2的事件处理程序(通常是Javascript事件处理函数),页面2上的事件处理程序完成数据处理;
4)页面2至页面1的反向通信过程按照同样的步骤进行;这样,就完成了两个不同WEB窗口页面间的数据通信过程。
所述的WES7环境中不同WEB窗口页面间的通信方法,各ActiveX插件进程实例读写的同一块内存中记录了所有被加载的ActiveX插件的通信窗口句柄及其分别对应的页面标识,即该块内存中保存了页面与ActiveX插件通信窗口句柄映射表。
所述的WES7环境中不同WEB窗口页面间的通信方法,当页面被销毁时,插件同时被销毁,销毁前会从内存中删除本插件的页面标识与ActiveX插件通信窗口句柄映射表。
所述的WES7环境中不同WEB窗口页面间的通信方法,多个WEB窗口之间的互相通信,按照前述两个不同WEB窗口页面间的数据通信过程进行。
本发明为使用IE浏览器控件编写的WEB业务客户端软件提供了多WEB窗口页面间通信的解决方案,本方案中所述WEB窗口是指内嵌IE浏览器控件的窗口。
本发明的有益积极效果:
1、本发明WES7环境中不同WEB窗口页面间的通信方法,解决了WES7环境中位于不同WEB窗口内的页面间无法通信的问题。为使用IE浏览器控件编写的WEB业务客户端软件提供了多WEB窗口页面间通信的解决方案,可以实现两个独立的浏览器窗口页面之间的双向通讯和控制,从而突破了页面数据通讯和控制能力只能局限在浏览器窗口内的限制。通过满足WEB窗口间通信需求,增强了WEB页面能力,丰富了WEB业务体验。
2、本发明WES7环境中不同WEB窗口页面间的通信方法,由于采用数据到来事件触发机制,接收数据页面只需绑定一个事件处理函数即可在有数据到来时及时处理数据,而无需循环或定时检测和等待可能到来的数据。性能好,处理数据及时。
3、采用本发明WES7环境中不同WEB窗口页面间的通信方法,扩展性好。不仅可以实现两个页面间的通信,也可以实现多个页面间通信,多页间通信无混乱。
附图说明
图1:本发明WES7环境中不同WEB窗口页面间通信流程示意图;
图2:本发明WES7环境中不同WEB窗口页面间通信方法页面关闭时插件销毁流程。
具体实施方式
实施例一:参见图1、图2,本发明WES7环境中不同WEB窗口页面间的通信方法,采用ActiveX插件作为WEB窗口页面间通信中介实现页面通信功能,为WEB页面间数据通信提供支撑:
1)WEB窗口加载通信页面时,各页面同时加载ActiveX插件,并告诉ActiveX插件该加载通信页面对应的标识;
2)页面1将页面2的标识及要发送的数据通过ActiveX插件开放的发送数据接口传递给页面1中的ActiveX插件,ActiveX插件通过查找页面与ActiveX插件通信窗口句柄映射表,找到页面2对应的ActiveX插件通信窗口句柄,然后以消息通知的方式将页面1要发送数据的位置告诉页面2的AcitveX插件;
3)页面2的ActiveX插件收到消息后,根据消息中传递的数据位置提取数据,然后调用自身的事件通知接口,将数据上报给页面2的事件处理程序(通常是Javascript事件处理函数),页面2上的事件处理程序完成数据处理;
4)页面2至页面1的反向通信过程按照同样的步骤进行;这样,就完成了两个不同WEB窗口页面间的数据通信过程。
实施例二:参见图1、图2,本发明WES7环境中不同WEB窗口页面间的通信方法,与实施例一稍有不同的是,各ActiveX插件进程实例读写的同一块内存中记录了所有被加载的ActiveX插件的通信窗口句柄及其分别对应的页面标识,即该块内存中保存了页面与ActiveX插件通信窗口句柄映射表。当页面被销毁时,插件同时被销毁,销毁前会从内存中删除本插件的页面标识与ActiveX插件通信窗口句柄映射表。
实施例三:参见图1、图2,本发明WES7环境中不同WEB窗口页面间的通信方法,与实施例一或实施例二稍有不同的是,对于多个WEB窗口之间的互相通信,按照前述两个不同WEB窗口页面间的数据通信过程进行。
本发明采用的技术原理是基于微软提供的IE浏览器控件和ActiveX插件技术。
微软提供了IE浏览器控件(控件名称:WebBrowser)供应用开发人员开发自己的WEB业务客户端软件,这样WEB客户端软件中的WEB窗口就相当于一个一个的IE浏览器。
微软提供的ActiveX插件可以像普通程序一样自由访问和控制操作操作系统本地资源,利用了该技术编写的ActiveX插件可被IE浏览器中的页面在需要时加载进IE浏览器进程中供页面调用,从而扩展页面能力。基于上述技术原理,本专利采用编写专门ActiveX插件作为WEB窗口页面间通信中介实现页面通信功能。
Windows ActiveX插件实现原理及其内部机制说明:
1.Windows ActiveX插件提供了容器调用插件功能和插件回调容器功能的编程技术。利用该技术,插件可以将其功能通过开放API接口方式提供给外部容器窗口使用,容器窗口调用插件API并传递相关参数使用插件功能;插件也可以通过开放事件接口,由容器将插件事件与容器中负责处理该事件的事件处理函数进行绑定,从而实现插件回调外部容器函数的目的(反过来说,就是容器可以响应并处理插件中产生的事件)。事件可将插件内部数据作为事件参数传递给容器的事件处理函数。
2. Windows ActiveX插件一旦在系统中注册后,各容器程序均可以通过该插件的CLSID标识,加载和实例化插件。不同进程的多个插件实例其内存空间相互隔离,不能互相访问。同一进程的多个插件实例处于同一进程内存空间,但WINDOWS并没有提供AcitveX插件间直接访问其内部数据的技术。
3.在页面中使用activeX插件的场景下,页面就是ActiveX插件的容器。
本专利插件功能及关键技术原理:
功能:单个进程的多个IE窗口页面间通信;
基本接口:插件需向页面开放的基本的API接口:
setName(name):告诉插件实例其所在页面名称,并记录到映射表中;
sendData(name,data):页面之间通信接口。页面通过调用该接口,告诉插件,要通信的页面名称及数据;
newDataMsg(data):新数据到来消息,用于页面接收数据使用。页面可将该接口按照普通JS事件绑定方式绑定javascript的数据处理函数。
关键技术:
本专利插件采用VC+MFC进行实现,并使用VC的ActiveX开发向导进行开发,故下面涉及代码的地方均使用VC+MFC进行描述。
1.    插件实例之间如何共享插件通信用到的窗口句柄与插件名称映射表(以下简称映射表)?
实现原理:利用C++语言静态变量具有在进程空间中全局有效的存储特征,我们使用在插件中使用静态变量来保存映射表,我们称之为静态映射表变量,定义语句为:staticCMapStringToOb s_mapNameToHwnd;。这样,各插件实例访问的就是同一块映射表内存空间了。
2.    插件实例之间如何标识自己和找到对方?
实现原理:s_mapNameToHwnd中记录了每个插件实例通信窗口的句柄与插件名称的映射关系,插件通信窗口句柄就是插件实例的标识,插件通过向该窗口句柄发送和接收消息来实现插件实例间的通信。通过插件给页面开放API接口setName的方式,让页面通过调用setName来告诉插件实例其所在页面名称,插件内部将该名称及插件实例内部通信窗口句柄保存到上述静态映射表变量s_mapNameToHwnd中。当sendData接口被调用时,插件实例会根据接口中传递的name参数遍历映射表s_mapNameToHwnd,找到name对应的窗口句柄后,就可以向该窗口发送WM_SEND_NEW_DATA消息了。当页面窗口被关闭时,插件实例的析构函数会从静态映射表变量s_mapNameToHwnd中删除本插件实例的标识。
3.    插件实例之间发送和接收数据的实现原理:
由于多个插件实例处于同一个进程内存空间,因此,当一个插件实例(简称:实例1)发送数据给另一个插件实例(简称:实例2)时,实例1只需将自身存储待发送数据的内存区的起始地址和数据长度(单位:字节)作为自定义WINDOWS消息(本插件实例采用的自定义消息:#define WM_SEND_NEW_DATA WM_USER+10)的参数发给实例2的通信窗口即可。由于WINDOWS消息允许携带两个整型参数,因此,可将发送数据存储区起始地址作为第一个参数,将发送数据长度作为第二个参数。
插件内部定义了通信窗口对应的WM_SEND_NEW_DATA消息的处理函数。当实例2通信窗口收到实例1发来的WM_SEND_NEW_DATA消息后,根据其中携带的数据存储区起始地址和数据长度将数据提取出来,然后通过WINDOWS ActiveX标准上报机制将数据上报给实例2所在页面即可。

Claims (4)

1.一种WES7环境中不同WEB窗口页面间的通信方法,采用ActiveX插件作为WEB窗口页面间通信中介实现页面通信功能,为WEB页面间数据通信提供支撑,其特征是:
1)WEB窗口加载通信页面时,各页面同时加载ActiveX插件,并告诉ActiveX插件该加载通信页面对应的标识;
2)页面1将页面2的标识及要发送的数据通过ActiveX插件开放的发送数据接口传递给页面1中的ActiveX插件,ActiveX插件通过查找页面与ActiveX插件通信窗口句柄映射表,找到页面2对应的ActiveX插件通信窗口句柄,然后以消息通知的方式将页面1要发送数据的位置告诉页面2的AcitveX插件;
3)页面2的ActiveX插件收到消息后,根据消息中传递的数据位置提取数据,然后调用自身的事件通知接口,将数据上报给页面2的事件处理程序,页面2上的事件处理程序完成数据处理;
4)页面2至页面1的反向通信过程按照同样的步骤进行;这样,就完成了两个不同WEB窗口页面间的数据通信过程。
2.根据权利要求1所述的WES7环境中不同WEB窗口页面间的通信方法,其特征是:各ActiveX插件进程实例读写的同一块内存中记录了所有被加载的ActiveX插件的通信窗口句柄及其分别对应的页面标识,即该块内存中保存了页面与ActiveX插件通信窗口句柄映射表。
3.根据权利要求2所述的WES7环境中不同WEB窗口页面间的通信方法,其特征是:当页面被销毁时,插件同时被销毁,销毁前会从内存中删除本插件的页面标识与ActiveX插件通信窗口句柄映射表。
4.根据权利要求1、2或3所述的WES7环境中不同WEB窗口页面间的通信方法,其特征是:多个WEB窗口之间的互相通信,按照前述两个不同WEB窗口页面间的数据通信过程进行。
CN2012105386911A 2012-12-13 2012-12-13 Wes7环境中不同web窗口页面间的通信方法 Pending CN103064747A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2012105386911A CN103064747A (zh) 2012-12-13 2012-12-13 Wes7环境中不同web窗口页面间的通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2012105386911A CN103064747A (zh) 2012-12-13 2012-12-13 Wes7环境中不同web窗口页面间的通信方法

Publications (1)

Publication Number Publication Date
CN103064747A true CN103064747A (zh) 2013-04-24

Family

ID=48107380

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2012105386911A Pending CN103064747A (zh) 2012-12-13 2012-12-13 Wes7环境中不同web窗口页面间的通信方法

Country Status (1)

Country Link
CN (1) CN103064747A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106843953A (zh) * 2017-01-16 2017-06-13 百融(北京)金融信息服务股份有限公司 基于iOS系统的应用程序横向切换系统和方法
CN109725951A (zh) * 2018-12-29 2019-05-07 上海掌门科技有限公司 控制方法、系统、电子设备和计算机可读介质
CN110955531A (zh) * 2018-09-27 2020-04-03 长沙博为软件技术股份有限公司 一种基于浏览器的扩展程序-bho技术实现多个页签间通讯的方法
CN113296762A (zh) * 2021-06-21 2021-08-24 北京有竹居网络技术有限公司 页面嵌入方法、装置、存储介质及电子设备
CN114610403A (zh) * 2022-01-24 2022-06-10 北京快确信息科技有限公司 一种跨进程的程序运行方法、装置、系统及介质
CN114827231A (zh) * 2022-04-11 2022-07-29 杭州指令集智能科技有限公司 基于浏览器本地存储实现多窗口点对点通信的方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101052040A (zh) * 2007-05-14 2007-10-10 华中科技大学 一种基于虚拟层和插件技术的网格互操作系统
CN101132413A (zh) * 2007-09-18 2008-02-27 中兴通讯股份有限公司 基于Web应用的ActiveX组件的复用方法
CN102307220A (zh) * 2011-03-18 2012-01-04 北京神州数码思特奇信息技术股份有限公司 一种跨域网页信息交互方法
CN102314510A (zh) * 2011-09-15 2012-01-11 奇智软件(北京)有限公司 一种浏览器控件执行方法及系统
CN102567125A (zh) * 2011-12-28 2012-07-11 中标软件有限公司 一种浏览器页面间通信的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101052040A (zh) * 2007-05-14 2007-10-10 华中科技大学 一种基于虚拟层和插件技术的网格互操作系统
CN101132413A (zh) * 2007-09-18 2008-02-27 中兴通讯股份有限公司 基于Web应用的ActiveX组件的复用方法
CN102307220A (zh) * 2011-03-18 2012-01-04 北京神州数码思特奇信息技术股份有限公司 一种跨域网页信息交互方法
CN102314510A (zh) * 2011-09-15 2012-01-11 奇智软件(北京)有限公司 一种浏览器控件执行方法及系统
CN102567125A (zh) * 2011-12-28 2012-07-11 中标软件有限公司 一种浏览器页面间通信的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘其成 等: "不同浏览器页面窗口中的JavaApplet间的通信", 《微型机与应用》, no. 1, 28 February 2003 (2003-02-28) *
刘其成 等: "不同浏览器页面窗口中的JavaApplet间的通信", 《微型机与应用》, no. 1, 31 December 2003 (2003-12-31) *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106843953A (zh) * 2017-01-16 2017-06-13 百融(北京)金融信息服务股份有限公司 基于iOS系统的应用程序横向切换系统和方法
CN106843953B (zh) * 2017-01-16 2019-12-17 百融(北京)金融信息服务股份有限公司 基于iOS系统的应用程序横向切换系统和方法
CN110955531A (zh) * 2018-09-27 2020-04-03 长沙博为软件技术股份有限公司 一种基于浏览器的扩展程序-bho技术实现多个页签间通讯的方法
CN109725951A (zh) * 2018-12-29 2019-05-07 上海掌门科技有限公司 控制方法、系统、电子设备和计算机可读介质
CN113296762A (zh) * 2021-06-21 2021-08-24 北京有竹居网络技术有限公司 页面嵌入方法、装置、存储介质及电子设备
CN114610403A (zh) * 2022-01-24 2022-06-10 北京快确信息科技有限公司 一种跨进程的程序运行方法、装置、系统及介质
CN114827231A (zh) * 2022-04-11 2022-07-29 杭州指令集智能科技有限公司 基于浏览器本地存储实现多窗口点对点通信的方法及系统
CN114827231B (zh) * 2022-04-11 2023-09-26 杭州指令集智能科技有限公司 基于浏览器本地存储实现多窗口点对点通信的方法及系统

Similar Documents

Publication Publication Date Title
CN103064747A (zh) Wes7环境中不同web窗口页面间的通信方法
KR20210036952A (ko) 랜덤 액세스 방법 및 관련 기기
CN116841685A (zh) 一种页面处理方法、装置以及相关设备
CN102595239A (zh) 一种终端系统的多屏互动方法、装置及智能电视机
CN105207886B (zh) 即时通信消息的发送、显示方法及发送、显示装置和系统
CN106302123A (zh) 一种数据提取、粘贴处理的方法、装置及其系统
CN102572218A (zh) 基于网络视频会议系统的视频标注方法
CN101661442A (zh) 数据卡信息保护方法及装置
CN104901815A (zh) 一种用户终端的分组方法、会议服务器、会议系统
CN106503069A (zh) 文件共享方法及装置
CN101383781A (zh) 虚拟域间短信息通讯方法
CN114281484A (zh) 数据传输方法、装置、设备及存储介质
CN103580998B (zh) 一种实现通信行为信息共享的方法及装置
CN105610730A (zh) Cpu与网络设备之间的消息交互方法及系统
CN105847594A (zh) 一种快捷发送文件的系统及方法
CN106507148B (zh) 显示控制方法和装置
CN102609310A (zh) 一种计算机操作系统及其进程间通讯的方法
CN100550844C (zh) 还原重定向报文特征信息的方法
CN108260119A (zh) 移动终端、嵌入式sim卡及其访问方法、装置
CN103368944A (zh) 一种内存共享网络架构及其协议规范
CN105163297A (zh) 跨操作系统接收彩信的方法及系统
EP2515503A1 (en) Method of managing data sent to a secure element via a HTTP response message
CN105939242B (zh) 实现虚拟系统的方法及装置
CN105320560A (zh) 用于将对跨多个域分布的应用和包的列出和启动加以统一的系统和方法
US20140298325A1 (en) Secure and reliable mechanism to provide a single object instance in a clustered system

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20130424