[发明专利]浏览器内ActiveX嵌套Flash正常交互的方法有效
申请号: | 201810361031.8 | 申请日: | 2018-04-20 |
公开(公告)号: | CN108536523B | 公开(公告)日: | 2020-11-13 |
发明(设计)人: | 朱长德;朱钰欣 | 申请(专利权)人: | 南京舆图科技发展有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F9/54;G06F9/448 |
代理公司: | 江苏圣典律师事务所 32237 | 代理人: | 胡建华;于瀚文 |
地址: | 210000 江苏省南京*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 浏览器 activex 嵌套 flash 正常 交互 方法 | ||
1.浏览器内ActiveX嵌套Flash正常交互的方法,其特征在于,包括如下步骤:
步骤1,使用Visual Studio创建一个Visual C++项目,项目类型为MFC ActiveX控件,代号为模块A,作为容器,根据应用的需要设置相应的接口和接口参数,统称为接口C,供浏览器调用,参循MFC标准方法来进行接口的添加和设置;
步骤2,创建嵌有Flash控件的可执行程序,代号为模块B,在模块B中实现模块A的接口C相对应的响应函数,统称为函数D,函数D中实现接口C中的实际应用功能,并设定模块B的类名为:Win32Application;
步骤3,将模块B设定为模块A的子程序模块,模块A作为模块B的父窗口模块,模块A的窗口事件将会因为父子窗口关系自动转发给模块B;
步骤4,同步模块A的窗口大小改变到模块B;
步骤5,建立接口C和函数D的交互连接,接口C包括两个类型:方法和回调,浏览器调用接口C时,能直接响应函数D或者函数D将结果传递给接口C,继而返回给浏览器;
步骤6,模块A销毁时,发送WM_CLOSE消息即关闭消息给模块B,作关闭同步处理,WM_CLOSE消息为Windows的标准窗口消息,当任何窗口接收到该消息时,窗口即执行关闭本窗口的操作;
步骤3包括:
步骤3-1,根据类名:Win32Application,通过FindWindow API获取模块B的窗口句柄;FindWindow是Win32标准接口API,通过该接口,能够通过程序的类名或者程序窗口的标题获取该程序的控制句柄HANDLE,该步骤正是使用该API,通过模块B的类名,让模块A获取模块B的控制句柄;
步骤3-2,将模块B的父窗口设置为模块A,模块A作为模块B的父窗口模块,模块A的窗口事件将会因为父子窗口关系自动转发给模块B;
步骤4包括:
步骤4-1,获取模块A的窗口尺寸;
步骤4-2,将模块B的窗口尺寸设定为步骤4-1中获得的窗口尺寸,保证模块B的窗口与模块A的窗口大小一致;
步骤5中所述建立接口C和函数D的交互连接,浏览器调用接口C时,能直接响应函数D或者函数D将结果传递给接口C,其中直接响应函数D包括如下步骤:
步骤5-1,在模块B中重载WM_COPYDATA映射函数;WM_COPYDATA是Windows窗口间的一个标准消息,该消息允许一个程序向另一个程序传递数据;模块B重载了WM_COPYDATA消息后会生成该消息的映射函数;
步骤5-2,模块A中的接口C本身不做功能的实现,当浏览器调用接口C时,接口C会通过SendMessage函数发送一个WM_COPYDATA消息给B模块,而接口中的参数都存放在COPYDATASTRUCT结构体中随消息发出,SendMessage是Windows的一个标准的API,用于给指定的程序发送消息,COPYDATASTRUCT为一个数据结构体,其数据结构为:
dwData:表示消息类型,使用整型,
cbData:表示参数的长度,
lpData:表示参数的内存地址;
步骤5-3,模块B接收WM_COPYDATA映射函数消息的响应:接收到WM_COPYDATA消息后,解析消息中传递过来的COPYDATASTRUCT数据,通过数据中的dwData来判断消息类型,根据类型来确定需要响应的函数D,而传递过来的参数指针地址都存放在内存地址lpData中,能够直接转换为传递过来时的数据类型并进行使用;
步骤5中所述建立接口C和函数D的交互连接,浏览器调用接口C时,能直接响应函数D或者函数D将结果传递给接口C,其中函数D将结果传递给接口C的过程,包括如下步骤:
步骤5-4,获取属性的请求由外部JavaScript发起调用接口C,接口C在执行该获取属性的方法时,使用SendMessage函数向模块B发送请求WM_COPYDATA消息,消息中的参数为COPYDATASTRUCT结构体数据,数据中的dwData消息类型为自行定义的获取属性的消息,模块B在收到该消息后,执行获取属性的操作即执行函数D,获取后,模块A和模块B将通过共享内存的方法将属性值从模块B传给模块A,最终传递给外部调用的程序JavaScript;
步骤5-5,模块B处理如下:模块B中创建共享内存并把需要传递的值拷贝至该共享内存首地址,在拷贝完成后通知模块A,模块A再从该内存中将该值取走。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京舆图科技发展有限公司,未经南京舆图科技发展有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810361031.8/1.html,转载请声明来源钻瓜专利网。