欢迎来到天天文库
浏览记录
ID:37873212
大小:88.00 KB
页数:4页
时间:2019-06-01
《ActiveX与网页之间互相通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、AcitonX控件的创建和使用(VS2010)一、ActionX控件的创建1创建ActionX控件程序文件->新建->项目->VisualC++->MFC->MFCActionX控件2创建ActionX控件的方法,属性和事件(不同于VC6.0)(以控件MyActionX为例)①创建属性(方法)在类视图中,MyActionXLib目录下右击_DMyActionX->添加属性(方法)②创建事件在类视图中,右击CMyActionXCtrl->添加事件,而不是右击_DMyActionXEvents二、ActionX控件的使用1应用在MFC应用程序中例如创建一个基本对话
2、框,则直接在对话框的任意处右击->InsertActionXControl或者在项目上右击->“ClassWizard”->“AddClass”点击下拉菜单->“MFCClassFromActionXControl”->Add->选择即可。2应用在网页上①将.ocx文件打包成CAB格式的文件;(可参考此网站:http://www.cnblogs.com/gengaixue/archive/2010/08/13/1799112.html准备找个时间试一下)②获取ocx控件的ID,及.cab文件的路径;③在网页中嵌入3、assbase=”.cab文件的路径”>.注意:1.如何获取ocx控件的ID号,可通过VS自带的工具“OLE-COMObjectViewer”来查看,打开该工具,在“ALLobjects”目录下可以找到自定义的控件,右击->“CopyCLSIDtoClipBoard”。2.当需要修改控件时,需要将正在使用该控件的应用程序关掉(如在MFC应用程序中),不然会报错。修改完之后需要先清理一下解决方案,然后再重新生成解决方案。补充--如何打包成CAB文件并且为其签名<一>需要的工具:1.cabsdk.exe(是个压缩包)下的CABARC.EXE2.C4、:ProgramFilesMicrosoftSDKsWindowsv7.0Abin下的:Cert2Spc.exe,makecert.exe3.signtool.rar<二>操作将这些工具拷贝到和控件在同一目录,在命令行中,到该目录下执行以下操作:1.makecert-sVMyactiveX.pvkMyactiveX.cer(密码:11)2.cert2spcMyactiveX.cerMyactiveX.spc3.cabarc-s6144nMyactiveX.cab*.ocxMyActiveX.inf4.运行signcode.exe5.验证是否签名成功:5、chktrustMyactiveX.cab页面中调用ActiveX控件及控件的方法具体的调用过程吧: Pdf1.src="c:/test.pdf"; Pdf1.gotoFirstPage();
3、assbase=”.cab文件的路径”>.注意:1.如何获取ocx控件的ID号,可通过VS自带的工具“OLE-COMObjectViewer”来查看,打开该工具,在“ALLobjects”目录下可以找到自定义的控件,右击->“CopyCLSIDtoClipBoard”。2.当需要修改控件时,需要将正在使用该控件的应用程序关掉(如在MFC应用程序中),不然会报错。修改完之后需要先清理一下解决方案,然后再重新生成解决方案。补充--如何打包成CAB文件并且为其签名<一>需要的工具:1.cabsdk.exe(是个压缩包)下的CABARC.EXE2.C
4、:ProgramFilesMicrosoftSDKsWindowsv7.0Abin下的:Cert2Spc.exe,makecert.exe3.signtool.rar<二>操作将这些工具拷贝到和控件在同一目录,在命令行中,到该目录下执行以下操作:1.makecert-sVMyactiveX.pvkMyactiveX.cer(密码:11)2.cert2spcMyactiveX.cerMyactiveX.spc3.cabarc-s6144nMyactiveX.cab*.ocxMyActiveX.inf4.运行signcode.exe5.验证是否签名成功:
5、chktrustMyactiveX.cab页面中调用ActiveX控件及控件的方法具体的调用过程吧:
6、上面, object对象为一个查看pdf的控件, classid为控件的id(必须的,控件的标识), codebase为控件的地址,id用于在页面上被js调用. 这些定义好了,就可以调用了ActiveX控件中的方法调用页面中的JavaScript方法用c#实现两个COM类,IOleClientSite和IOleContainer[ComImport,Guid("00000118-0000-0000-C000-000000000046"),InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]publicint
7、erfaceIOleClientSite{voidSaveObject();voidGetMoniker(uintdwAssign,uintdwWhichMoniker,objectppmk);voidGetContainer(outIOleContainerppContainer);voidShowObject();voidOnShowWindow(boolfShow);voidRequestNewObjectLayout();}[ComImport,Guid("0000011B-0000-0000-C000-000000000046"),Interface
8、TypeAttribute(ComIn
此文档下载收益归作者所有