在VC、VB中使用ActiveX技术

  一.ActiveX的内容

  ActiveX既包括服务器端技术,也包括客户端技术,其主要内容如下。

  1.ActiveX控件

  ActiveX控件是OLE控件的更新版本。控件(Control)是建立可编程部件(Component)的主要元素。ActiveX控件可以用于所有支持COM规范的容器中,或者作为Internet控件嵌入到Web页面中。用户访问该页面时,将下载该控件并自动在本地注册。利用脚本描述语言(Script)可以在控件之间以及客户与服务器之间通过设置属性(Property)、调用方法(Method)和激活事件(Event)进行通信。目前,很多第三方开发商编制了各式各样的ActiveX控件,在Internet上有一千多个ActiveX控件可供用户下载使用。

  2.ActiveX文档

  ActiveX文档提供了传统的嵌入对象的扩展方法。ActiveX文档对象可以包含多个页,显示在整个客户区中,并支持原有的菜单功能。ActiveX文档可以作为对象嵌入到Web网页中,并在Web上发布。

  Microsoft Office 97提供了Microsoft Office Binder,用来生成并浏览由Microsoft Word、Microsoft Excel或者用户定义的ActiveX文档等构成的复合文档。每一种文档类型都可以直接进行编辑修改。

  3.ActiveX脚本描述语言

  利用VBScript或者JavaScript,可以向Web页面中加入用于交互的ActiveX控件,将数据预处理或者把检验过程放在客户端运行,然后将结果传给Web服务器。

  4.ActiveX服务器框架

  在Web服务器上创建扩展应用程序,动态生成Web页面。使用MFC提供的ISAPI类可以方便地建立Web服务器端的扩展应用程序。

  5.在IE中内置Java虚拟机

  Java虚拟机(Java Virtual Machine)使Java Applet能够在Internet Explorer中运行,并可以通过脚本描述语言与ActiveX控件进行通信。

  ActiveX还提供了一种扩展编程语言(包括Java语言在内)的机制,使Java的开发人员可以在Applet中直接嵌入ActiveX控件,或者以ActiveX技术为桥梁,将其他开发商提供的程序对象集成到Java程序中。

  二.Visual C++对ActiveX的支持

  VC++(企业版)为Internet的开发提供了完整的解决方案,其内容如下。

  (1)使用MFC或者ATL开发ActiveX控件和ActiveX文档;

  (2)使用ISAPI设计Web服务器端的部件;

  (3)使用WinInet开发通过Internet存取文件的应用程序;

  (4)使用Asynchronous Monikers生成从Internet下载数据的应用程序;

  (5)使用ActiveX SDK开发其他类型的基于Internet的Win32应用程序,包括ActiveX Scripting Host、Microsoft WebConferencing等。

  1.用VC开发ActiveX控件

  VC++提供了两种途径来开发ActiveX控件,即MFC和ATL(Active Template Library)。使用MFC,可以不理会控件接口的细节,而把注意力集中在控件本身的功能上,但是它生成的控件比较大,而且,如果客户端要运行此ActiveX控件,必须拥有相应版本的MFC类库的DLL,否则,必须同时下载这些巨大的类库;使用ATL时,由于不涉及MFC的标准类库,生成的控件相对较小,但开发者必须了解COM、OLE技术的细节。大多数情况下,可以使用MFC开发ActiveX控件,这样比较容易,而且,由于Internet Explorer 3.0提供了MFC 4.1的类库,而Internet Explorer 3.0是Windows 95提供的组件,所以,只要ActiveX控件使用的是MFC 4.1或者更早的版本,则多数情况下是不需要下载MFC类库的。

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

  (1)CMyNameApp:从类COleControlModule派生,而类COleControlModule则派生自CWinApp;

  (2)CMyNameCtrl:从类COleControl派生,而类COleControl则派生自CWnd;

  (3)CMyNamePropPage:从类COlePropertyPage派生,而类COlePropPage则派生自Cdialog。

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

  2.ActiveX控件在Web上的应用

  与Java的字节码技术相比,ActiveX提供了“代码签名”(Code Signing)技术以保证其安全性,并在服务器与客户端建立良好的信任关系。要为每个在Web上使用的ActiveX控件设置一个“代码签名”(Code Signing),可以使用VC提供的 “代码签名”工具,该工具可以生成和测试“代码签名”。如果要正式发布,则必须向有关机构申请(参见http://www.microsoft.com/intdev/signcode/网址上的内容)。在Web页面中使用ActiveX控件,还要对其进行包装,将有关的动态链接库及信息文件压缩到一个扩展名为CAB(Cabinet)的文件中,也可以使用VC提供的工具包装ActiveX控件。在HTML文件中,使用OBJECT标签插入ActiveX控件,并利用VBScript或者JavaScript访问该控件。在客户端用Internet Explorer浏览此页面时,IE可以自动解包该文件。出于安全性的考虑,Internet Explorer还为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>

  

  <SCRIPT language = "VBScript">

  Sub chart1_Click()

   Document.chart1.TitleText="My Title"

  End Sub

  这里必须提供该OCX的ClassID和文件路径或URL。在客户端浏览此页面时,先在本地的注册表中查找该ClassID,如果存在,则不必下载,否则,必须按照CODEBASE指定的路径搜索该控件并下载。标签OBJECT中的ID是该OCX对象的名称,用来访问和设置对象属性以及调用对象方法等。

  3.用VC开发ActiveX文档服务器

  MFC 4.2不支持开发ActiveX容器,但支持ActiveX服务器。只要在使用MFC AppWizard生成应用程序框架时选择支持Active Document,就可以生成标准的ActiveX文档服务器。运行此应用程序时,该文档对象将自动注册。要测试这个ActiveX文档,则可以运行任何一个ActiveX文档容器,如Microsoft Binder、Microsoft Word等,再插入此对象。

  4.VC的ActiveX服务器框架

  (1)ISAPI(Internet Server API)

  ISAPI过滤器提供了扩展支持Web服务器的简单而有效的方法,开发人员可以设计生成ISAPI 服务器扩展动态链接库(ISAPI Server Extension DLL),它可以被HTTP服务器调用。

  (2)ISAPI过滤器(ISAPI Filters)

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

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

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

  5.WinInet(Microsoft Win32 Internet Extensions)

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

  6.Asynchronous Monikers

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

  7.ActiveX SDK

  VC还提供了专门的Win32 ActiveX开发工具ActiveX Software Development Kit(ActiveX SDK)。ActiveX SDK包含一系列接口定义以及与Internet有关的Win32函数,包括ActiveX Scripting Component、Web Browsing Object、WebPost API等,用户可以利用这些接口和API来开发面向Web的应用程序或ActiveX部件。

  8.VC 6.0的新功能

  1998年9月,Microsoft推出了的Visual C++ 6.0,VC 6.0除了保留VC 5.0对ActiveX的支持外,还将支持DHTML、MFC及ATL的类库,并对模板也有扩充,用户可以方便地开发出类似Web浏览器界面的应用程序。 



来自:http://www.ec66.com/article/list.asp?indexid=1611  
利用activeX实现matlab和vb的混合编程-vb_matlab_activeX.rar      想要在vb里面直接执行matlab的代码吗?想省去编译dll文件的代码吧?     好的,activeX帮你实现这样的功能.     activeX简介: ActiveX部件是Microsoft公司提供的一种用于模块集成的新的协议,它是Visual Basic工具箱的扩充部分。在程序加入ActiveX后,它将成为开发和运行环境的一部分。Matlab实现了ActiveX自动化服务支持,在Visual Basic下通过ActiveX自动化接口可将Matlab作为Visual Basic语言的一个ActiveX部件调用,实现VB与MATLAB间的无缝集成,该方式比较适合C/S模式,具有自动化程度高、效率高、占用资源少、数据交换能力强等优点,大大缩短了程序开发周期,优化了系统性能。 activeX运用: 使用ActiveX部件,首先必须获得Matlab ActiveX对象在系统注册表定义的名字─Matlab.Application。在VB创建ActiveX对象的代码如下: Dim Matlab as Object. Set Matlab = CreateObject Matlab.Application对象主要有3个函数,具体如下: (1) BSTR Execute([in]BSTR Command)方法 接受单一的字符串(Command), MATLAB将运行命令及结果作为一个字符串返回。用于执行一个合法的MATLAB命令; (2) PutFullMatrix方法 void PutFullMatrix pr, [in] SAFEARRAY pr, [in] SAFEARRAY pi ) 将一个指定变量名的一维或二维数组(mxArray)放入工作空间。 (3) GetFullMatrix方法 void GetFullMatrix pr, [in] SAFEARRAY pr, [in] SAFEARRAY pi ) 通过GetFullMatrix方法,从指定的工作空间检索一个完整的一维或二维的实型或虚型数组(mxArray),其实部和虚部分别存放到两个单独的Double型数组。[2] 通过这三种方法,可以方便地利用Matlab执行命令,从VB向Matlab输送数据或者从Matlab获取数据。 实例举例: 1.程序功能: 给出三个变量:x=0:0.05*pi:10*pi;y=sin;z=cos 并且做出x,y,z的三维图形,并在vb的image窗口显示,             下面是vb程序的界面,只有一个command按钮和image图片框    程序界面.jpg 下面是程序的运行结果: 程序运行结果.jpg 2.代码 Dim Matlab As Object Dim Result1 As String Dim Result2 As String Dim Result3 As String Private Sub Command1_Click() Result1 = Matlab.Execute;z=cos") Result2 = Matlab.Execute") Result3 = Matlab.Execute") Image1.Picture = Clipboard.GetData() Call Matlab.quit '退出Matlab End Sub Private Sub Form_Load() Set Matlab = CreateObject End Sub 3.程序源程序: vb_matlab_activeX.rar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值