ActiveX与网页之间互相通信.doc_第1页
ActiveX与网页之间互相通信.doc_第2页
ActiveX与网页之间互相通信.doc_第3页
ActiveX与网页之间互相通信.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AcitonX控件的创建和使用(VS2010)一、 ActionX控件的创建1 创建ActionX控件程序文件-新建-项目-Visual C+ - MFC - MFC ActionX控件2 创建ActionX控件的方法,属性和事件(不同于VC 6.0)(以控件MyActionX为例) 创建属性(方法) 在类视图中,MyActionXLib目录下右击_DMyActionX-添加属性(方法) 创建事件 在类视图中,右击CMyActionXCtrl-添加事件,而不是右击_DMyActionXEvents二、 ActionX控件的使用1 应用在MFC应用程序中例如创建一个基本对话框,则直接在对话框的任意处右击-Insert ActionX Control或者在项目上右击-“Class Wizard”-“Add Class”点击下拉菜单-“MFC Class From ActionX Control”-Add-选择即可。2 应用在网页上将.ocx文件打包成CAB格式的文件;(可参考此网站:/gengaixue/archive/2010/08/13/1799112.html准备找个时间试一下)获取ocx控件的ID,及.cab文件的路径;在网页中嵌入.注意:1.如何获取ocx控件的ID号,可通过VS自带的工具“OLE-COM Object Viewer”来查看,打开该工具,在“ALL objects”目录下可以找到自定义的控件,右击-“Copy CLSID to ClipBoard”。2. 当需要修改控件时,需要将正在使用该控件的应用程序关掉(如在MFC应用程序中),不然会报错。修改完之后需要先清理一下解决方案,然后再重新生成解决方案。补 充 -如何打包成CAB文件并且为其签名需要的工具:1. cabsdk.exe(是个压缩包)下的CABARC.EXE2. C:Program FilesMicrosoft SDKsWindowsv7.0Abin下的:Cert2Spc.exe,makecert.exe3. signtool.rar操作将这些工具拷贝到和控件在同一目录,在命令行中,到该目录下执行以下操作:1. makecert -sV MyactiveX.pvk MyactiveX.cer (密码:11)2. cert2spc MyactiveX.cer MyactiveX.spc3. cabarc -s 6144 n MyactiveX.cab *.ocx MyActiveX.inf4. 运行signcode.exe5. 验证是否签名成功: chktrust MyactiveX.cab页面中调用ActiveX控件及控件的方法具体的调用过程吧: Pdf1.src=c:/test.pdf; Pdf1.gotoFirstPage(); 上面,object对象为一个查看pdf的控件,classid为控件的id(必须的, 控件的标识),codebase为控件的地址, id 用于在页面上被js调用. 这些定义好了, 就可以调用了ActiveX控件中的方法调用页面中的JavaScript方法用c#实现两个COM类,IOleClientSite和IOleContainerComImport,Guid(00000118-0000-0000-C000-000000000046),InterfaceType(ComInterfaceType.InterfaceIsIUnknown)public interface IOleClientSitevoid SaveObject();void GetMoniker(uint dwAssign, uint dwWhichMoniker, object ppmk);void GetContainer(out IOleContainer ppContainer);void ShowObject();void OnShowWindow(bool fShow);void RequestNewObjectLayout();ComImport, Guid(0000011B-0000-0000-C000-000000000046),InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)public interface IOleContainer void EnumObjects(In, MarshalAs(UnmanagedType.U4) int grfFlags, Out, MarshalAs(UnmanagedType.LPArray) object ppenum); void ParseDisplayName(In, MarshalAs(UnmanagedType.Interface) object pbc,In, MarshalAs(UnmanagedType.BStr) string pszDisplayName,Out, MarshalAs(UnmanagedType.LPArray) int pchEaten,Out, MarshalAs(UnmanagedType.LPArray) object ppmkOut);void LockContainer(In, MarshalAs(UnmanagedType.I4) int fLock);调用JavaScript方法在ActiveX控件的对应类中就可以编写如下的CallJavaScript方法:private void CallJavaScript(string Filenames)Type typeIOleObject = this.GetType().GetInterface(IOleObject,true); object oleClientSite = typeIOleObject.InvokeMember(GetClientSite,BindingFlags.Instance|BindingFlags.InvokeMethod|BindingFlags.Public, null, this, null); IOleClientSite oleClientSite2 = oleClientSite as IOleClientSite;IOleContainer pObj;oleClientSite2.GetContainer(out pObj);/参数数组object args = new object1;args0 = Filenames;/获取页面的Script集合IHTMLDocument pDoc2 = (IHTMLDocument)pObj;object script = pDoc2.Script;try/调用JavaScript方法OnScaned并传递参数,因为此方法可能并没有在页面中实现,所以要进行异常处理script.GetType().InvokeMember(OnScaned, BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public, null, script

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论