分享
 
 
 

ActiveX技术综述(二)

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

6.VisualC++5.0对ActiveX的支持

VC++5.0(企业版)为Internet开发提供了完整的解决发案,其内容是:

*使用MFC或者ATL开发ActiveX控制和ActiveX文档。

*使用ISAPI设计WEB服务器端的部件。

*使用WinInet开发通过Internet存取文件的应用程序。

*使用AsynchronousMonikers生成从Internet下载数据的应用程序。

*使用ActiveXSDK开发其它类型的基于Internet的Win32应用程序,包括ActiveXScriptinGhost,MicrosoftWebConferencing等。

6.1.用VC5.0开发ActiveX控制

VC++5.0提供两个途径开发ActiveX控制:MFC和ATL(ActiveTemplateLibrary)。使用MFC,可以不必理会控制接口的细节,把注重力集中在控制本身的功用上,但是生成的控制比较大。而且,客户端假如要运行此ActiveX控制,必须拥有相应

版本的MFC类库的DLL,否则,必须同时下载这些巨大的类库;使用ATL,由于不涉及MFC的标准类库,生成的控制相对较小,但开发者必须了解COM、OLE技术的细节。大多数情况下,可以使用MFC开发ActiveX控制,这样比较轻易。而且,由于InternetEXPlorer3.0提供了MFC4.1的类库,而InternetExplorer3.0是Windows95提供的组件,所以,只要ActiveX控制使用的是MFC4.1或者更早的版本,多数情况下不需要下载MFC的类库。

使用MFC开发ActiveX控制,可以用MFCActiveXControlWizard生成工程框架。VC会自动产生三个类:(假设MyName是控制的名字。)

*CMyNameApp:从类COleControlModule派生,而类COleControlModule则派生自CWinApp;

*CMyNameCtrl:从类COleControl派生,而类COleControl则派生自CWnd;

*CMyNamePropPage:从类COlePropertyPage派生,而类COlePropPage则派生自CDialog;

可以看出,这个框架与一般的MFC应用程序有些类似。开发人员的大部分工作在CMyNameCtrl中,例如用ClassWizard添加属性、方法和事件,处理显示等。

编译生成OCX文件后,用VC提供的ActiveXTestContainer测试这个控制,也可以用OLE/COMObjectViewer浏览此控制的接口信息及类型库。

6.2.ActiveX控制在WEB上的应用

考虑到WEB的安全性,为了在服务器与客户端建立良好的信任关系,必须为每个在WEB上使用ActiveX控制设置一个“代码签名”(CodeSigning)。VC5.0提供了生成供测试用的“代码签名”的工具。假如要正式发布,则必须向有关机构申请。

(参见http://www.microsoft.com/intdev/signcode/)

在WEB页面中使用ActiveX控制,还要对之进行包装,将有关的动态连接库及信息文件压缩到一个扩展名为CAB(Cabinet)文件中。可以使用VC5.0提供的工具包装ActiveX控制。在Html文件中,使用OBJECT标签插入ActiveX控制,并利用VBScript或者JScript访问该ActiveX控制。客户端用InternetExplorer浏览此页面时,可以自动解包该文件。出于安全性的考虑,InternetExplorer为ActiveX部件的下载、初始化、是否拥有合法的代码签名以及是否答应Scripting等设置了不同的

安全级别,用户可根据需要进行设置。下面这个例子中,使用了ActiveX控制“MSChart.OCX",当用鼠标单击此控制时,控制的标题将改变。

<OBJECT

CLASSID="clsid:31291E80-728C-11CF-93D5-0020AF99504A"

CODEBASE="MSCHART.CAB#version=1,0,0,0"

ID=chart1

WIDTH=400

HEIGHT=200

ALIGN=center

>

</OBJECT>

<SCRIPTlanguage="VBScript">

Subchart1_Click()

Document.chart1.TitleText="MyTitle"

EndSub

这里,必须提供该OCX的ClassID和文件路径或URL。客户端浏览此页面时,先在本地的注册表中查找该ClassID,假如存在,则不必下载。否则,必须按照CODEBASE指定的路径搜索该控制并下载。标签Object中的ID是该OCX的对象的名称,用来

访问和设置对象属性,调用对象方法等。

6.3.用VC5.0开发ActiveX文档服务器

MFC4.2不支持开发ActiveX容器,但支持ActiveX服务器。只要在使用MFCAppWizard时生成应用程序框架时,选择支持ActiveDocument,就可生成标准的ActiveX文档服务器。运行此应用程序时,该文档对象将自动注册。要测试这个ActiveX 文档,可以运行任何一个ActiveX文档容器,如MicrosoftBinder、MicrosoftWord等,再插入此对象。

6.4.VC5.0的ActiveX服务器框架

*ISAPI(InternetServerAPI)

ISAPI提供了扩展支持WEB服务器的简单而有效的方法。开发人员可以设计生成IS API服务器扩展动态连接库(ISAPIServerExtensionDLL),它可以被HTTP服务器调用。例如,客户端用户填写了一个表单,按下“提交”按钮后,输入的数据将被传送至HTTP服务器,激活相应的ISAPI扩展应用程序,该应用程序可以处理用户的输入信息,进行相应的操作。或者,按照用户的要求访问数据库,读取用户指定的数据,动态生成HTML文件,再传回客户端。

*ISAPI过滤器(ISAPIFilters)

ISAPI过滤器是一种运行在支持ISAPI的HTTP服务器上的动态连接库。它的作用是:监视服务器与客户端的事件,当预先指定的某事件发生时,过滤器被调用,对要传递的数据进行加密或压缩,或者进行身份认证。换句话说,ISAPI过滤器提供了对服务器和客户之间传递的数据进行预处理的功能。

*ISAPI和通用网关接口(CGI)的比较

ISAPI为WEB服务器提供了通用网关接口应用程序的替代解决方案。与CGI不同的是,ISAPI扩展应用程序和HTTP服务器运行在同一个地址空间,不需要创建新的进程,因而不需要进行那些进程之间耗费时间的通讯。ISAPI应用程序可以从HTTP服务 器中卸载,为其它进程腾出内存空间。CGI则必须为每一个任务建立独立的执行文件及URL映射,HTTP服务器收到达每一个请求都将启动一个新的进程。另外,CGI没有与ISAPI过滤器相对应的功能。

6.5.WinInet(MicrosoftWin32InternetExtensions)

VC5.0提供了开发客户端基于WEB的应用程序的API:WinInet,并将其封装成若干MFC类,如CInternetSession、CHttpConnection等。使用这些类,开发人员不需了解TCP/IP以及Winsock的细节,只要针对具体应用建立类对象就可以了。

6.6.AsynchronousMonikers

由于目前网络带宽的限制,用户通常希望能够异步下载数据,例如异步下载网页的一张图片,并显示下载进度。MFC提供了类CAsyncMonikerFile来实现这个功能。

6.7.ActiveXSDK

VC5.0还提供了专门的WIN32ActiveX开发工具:ActiveXSoftwareDevelopmentKit(ActiveXSDK)。ActiveXSDK包含一系列接口定义及与Internet有关的WIN32函数,包括ActiveXScriptingComponent、WebBrowsingObject、WebPost API等,用户可以利用这些接口和API开发面向WEB的应用程序或ActiveX部件。

6.8.VisualC++6.0

1998年9月,Microsoft将推出的VisualC++6.0。VC6.0除了保留VC5.0的ActiveX支持外,还将支持DHTML,MFC及ATL的类库及模板也有扩充。用户可以方便地开发出类似WEB浏览器界面的应用程序。

7.VisualBasic5.0对ActiveX的支持

7.1.VisualBasic部件

VisualBasic5.0(以下简称VB)的部件(Component)是由可执行代码构成的文件(EXE,DLL,OCX),它可以为其他应用程序或者部件使用。以前版本的VB答应用户生成称为"OLEServer"的部件,VB5.0扩展了部件设计功能,支持引发事件,异步回调(Call-backs)等,并增强了创建ActiveX控制和ActiveX文档的功能

VB5.0的ActiveX部件(Component)包括:

*ActiveX控制

ActiveX控制与客户应用程序运行在同一个进程中。用VB5.0创建可用于VB或者其它开发工具及WEB浏览器的ActiveX控制,与一般的VB应用程序设计大同小异。可以为ActiveX控制加上属性页,并实时调试。另外,VB5.0提供了一组强大的数据库存取控制,开发人员只需编写少量代码就可以完成一般的数据库操作。

*ActiveX文档

VB5.0的ActiveX文档提供了内置的窗口滚动、超链接以及菜单支持,直接嵌入WEB页中。编制ActiveX文档与设计VB表单(FORM)完全相同,用户可以选择生成ActiveXDocumentDLL或者ActiveXDocumentEXE。无论哪一种类型,VB都将生成一个类似表单文件的VBD(VisualBasicDocument)文件。可以直接用Internet Explorer来浏览这个文件,或者用VBScript或者JScript进行访问。

*ActiveXDLL

ActiveXDLL提供的对象与应用程序运行于同一个进程中。应用程序可以创建对象,设置对象属性,调用对象的方法。ActiveXDLL一般不需要建立用户界面。

*ActiveXEXE

ActiveXEXE提供的对象与应用程序运行于在不同的进程中。应用程序创建对象,调用对象的方法后,可以继续进行自己的工作。当对象的工作完成后,它会通知应用程序。

ActiveXDLL和ActiveXEXE合称为VisualBasic代码部件(CodeComponent)。

7.2.包装ActiveX部件

上述ActiveX部件都可以使用VB5.0的SetupWizard进行包装,生成采用Lempel-Ziv压缩算法的CAB文件,在WEB上发布。SetupWizard将把相关的动态连接库及信息文件一同包装。使用VB5.0生成的ActiveX部件,可以包装成SafeScripting和SafeInitializing。

7.3.ActiveX文档在WEB上的应用

向WEB页面中加入ActiveX文档,首先要将该ActiveX文档包装成CAB文件。由于InternetExplorer读入ActiveX文档时,该文档将取代当前的WEB页,因此,一般将ActiveX文档(即HTML的标记OBJECT)放在一个独立的HTML文件中。例如,下面这条语句建立了一个超链接:

<AhRef="ActiveXDoc.htm">LinktoaActiveXDocument</A>

其中,ActiveXDoc.htm是下载ActiveX文档的HTML文件:

<OBJECT

classid="clsid:2F390484-1C7D-11D0-8908-00A0C90395F4"

codebase="ActiveXDoc.cab#version=1,0,0,0">

</OBJECT>

这条语句将下载ActiveXDoc.cab,并在Windows注册表中注册该ActiveX文档。

7.4.VisualBasic代码部件在WEB上的应用

VisualBasic代码部件包括ActiveXDLL和ActiveXEXE,它们可以在服务器端运行,也可以从客户端下载再运行。

假如某个ActiveXDLL运行在服务器端,服务器上运行的是InternetInformationServer,则可以使用VB的OLEISAPI2.DLL提供的函数进行访问,或者基于ActiveServerPages使用VBScript或者JScript。

假如希望客户端下载某个代码部件,则首先要将该部件包装成CAB文件。例如,用VB5.0企业版生成了一个ActiveXDLL:MyDLL.DLL,它只有一个类:MyClass,其唯一的方法是显示LogIn对话框。用SetupWizard包装这个部件,生成了CAB文件。下面的语句将在客户端下载MYDLL.CAB:

<OBJECTID=MyClass

CLASSID="CLSID:503B3E09-2191-11D2-8E90-00104B64F7B7"

CODEBASE="mydll.cab">

</OBJECT>

<INPUTTYPE=buttonVALUE="LogInNOW"NAME="BTnLogin">

<!--

Whenthebuttonisclicked,callthe"LogIn"method.

-->

<SCRIPTlanguage="VBScript">

<!--

SubWindow_OnLoad

MyClass.Login

EndSub

SubBtnLogin_OnClick()

MyClass.Login

EndSub

-->

</Script>

其中,ObjectID是这个ActiveXDLL中某个类的名字。当此WEB页面被下载并显示时,MyClass类的方法LogIn将被调用,并在客户端显示LogIn对话框。

7.3.VisualBasic6.0

Microsoft计划于1998年9月推出VisualBasic6.0。目前Beta版正在测试。VB6.0与VB5.0相比,除继续支持InternetExplorerDocumentObjectModel(DOM)开发之外,将提供两个令人兴奋的新功能:

*DynamicHTML编辑器

开发人员可以象编制普通VB程序一样,制作DHTML文件或模板。

*WebClasses;

开发人员可以在WEB服务器端建立与ASP文件一一对应的WebClass类,每个类都可以访问ASP对象,在VisualBasicIDE中跟踪调试,并生成ISAPI动态连接库。

8.小结

正如Internet和WEB技术一样,ActiveX技术的发展日新月异,新的更强大的开发工具使得服务器及客户端的应用开发、网站建设变得更简单,并轻易扩展和重用。随着Microsoft的包括WindowsNT、InternetInformationServer、ActiveServerPages以及MicrosoftFrontPage、InternetExplorer等组件在内完整的Internet解决方案被广泛使用,ActiveX技术将会有更大的发展。

参考文献:

1.VisualC++技术内幕(第二版),[美]DavidJ.Kruglinski著,王国印译,

清华大学出版社。

2.ActiveX开发人员指南,[美]EricTall,MarkGinsburg著,章巍等译,机械

工业出版社。

3.VisualBasic6.0:YouWon'tBelieveWhatJustHittheWeb,JoshuaT

rupin,MicrosoftInteractiveNetworkDeveloper(MIND),1998年8月。

4.IntrodUCtiontoActiveXControls,MicrosoftCorp.,MSDN,1998年8月。

5.DynamicHTMLandtheBigPicture,JohnSwenson,MSDNOnline,1997年11月。

6.ABriefPreviewoftheVisualBasic5.0DevelopmentEnvironment,MichaelOtey,WindowsNTMagazine,1997年4月。

7.http://www.microsoft.com/,Microsoft公司,包括MSDN、MSJ等技术资源。

8.http://www.ActiveX.com,第三方开发的ActiveX控制。

9.http://www.Active-X.com,有关ActiveX技术的文档资料。

10.http://www.WinntMag.com,WindowsNTMagazine杂志。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有