懂ASP(Active Server Pages)的人很多,但能用ASP自如地调用ActiveX控件的人却不多;如果不调用ActiveX控件,则可以说微软当初设计ASP的初衷根本没有达到。众所周知,ActiveX技术是微软在Internet上除了IE外的另一个新举措,可以说该技术渗透在它的整个Internet策略中。ActiveX是一个功能强大的部件,可以用VB、C或C++等语言进行编写,因为是编译性执行,故速度比较快。 在ASP(Active Server Pages)中内建了多个功能强大的ActiveX Server控件,包括Ad Rotator(动态广告生成控件)、BrowserType Capabilities(浏览器相容控件)、Database Access(数据库存取控件)、Content Linking(文件链接控件)和File Access Component(文件存取控件)等。当然,ASP除了可以调用内嵌的ActiveX控件外,还可以调用其他用户编写的标准的ActiveX控件。  
    
      在使用控件前先要进行定义,如:<% Set对象变量名称=Server.CreateObject("ADODB.Connection") %>,或直接用HTML的<OBJECT>和</OBJECT>标记进行定义,效果一样。  
    
     例:<OBJECT RUNAT=SERVER

   ID=对象变量名称

   PROGID="ADODB.Connection">  
    
      </OBJECT>  
    
     定义好后,我们就可以开始调用它的方法来配合相关工作的进行。  
    
       
    
      一.内嵌各种ActiveX控件的方法和属性  
    
      1.Database Access(数据库存取控件)  
    
      这是一个非常重要的部分,因为50%以上的工作几乎都要涉及到数据库,使用该控件可以说是必不可少的。在ASP中使用ADO(Active Data Objects)来存取数据库资料,如果是远程的数据源,则可采用RDO(Remote Data Objects)。ADO包括以下七个对象类。  
    
      Command:定义一些特别的命令语法,让你可以执行相应的程式。  
    
      Connection:提供对OLE DB信息源的链接。  
    
      Error:用来描述存取数据库时发生的错误。  
    
      Field:以行作为读取信息单元。  
    
      Parameter:使用Command时需传入的参数。  
    
      Property:记录ADO对象的动态特性。  
    
      Recordset:用来保存读取回来的数据库信息。  
    
      下面以一个最普通的例子来说明读取数据库信息、然后发布该信息的步骤。首先在ODBC Driver里建立一个名字为test的System DSN,链接到你的任意一个数据库上;然后用写字板创建一个后缀名为.asp的文本,内容如下。  
    
      <HTML><BODY>  
    
      <%

   set DC=CREATEOBJECT("ADODB.CONNECTION")

   ;定义一个DC为Connection的对象

   DC.OPEN "test"

   ;OPEN是Connection的一个方法,如果你链接的是Access或Foxpro数据库,则可采用上面的方法,如果是其他类似于sql、oracle等需要用户名和密码才允许访问的数据库,则可通过DC.OPEN"test","uid","password"来打开数据库源。

   SQL="select * FROM JOB"

   set RESULT=DC.EXECUTE(SQL)

   ;EXECUTE是Connection的另一个方法,用于执行SQL语句。这里定义RESULT为RECORDSET对象,用于接收SQL语句执行后的返回结果。如果不需要保存返回结果,则可直接调用“DC.EXECUTE SQL"。

   DO WHILE NOT RESULT.EOF

   RESPONSE.WRITE RESULT("NAME")

   ;假设NAME是数据库的一个属性。

   RESULT.MOVENEXT

   ;除了MOVENEXT外,还有MOVEFIRST、MOVELAST等方法,与VB类似。

   LOOP

   RESULT.CLOSE

   %>  
    
      </BODY></HTML>  
    
      从上面的例子中,我们可以清楚地看到,链接OLE DB信息源最常用的类是Connection类,其方法包括OPEN、EXECUTE、CLOSE、BEGINTRANS、COMMITTRANS和ROLLBACKTRANS。如果你很熟悉SQL Script中的回滚操作,那么对BEGINTRANS一定不会感到陌生,最后三个方法是用于对一些事件进行回滚的操作,其语法如下(要补充的一点是,如果你能在数据库里完成回滚的操作,那么最好在数据库里进行,因为这样效率会更高,对系统的影响也就会更少)。  
    
      BEGINTRANS  
    
      语法:[level=]Connection 对象.BeginTrans  
    
      其中level是一long类型的变数,用来存储BeginTrans方法所传回的level值。  
    
      COMMITTRANS  
    
      语法:Connection 对象.CommitTrans  
    
      存储当前的所有动作和结果。  
    
      ROLLBACKTRANS  
    
      语法:Connection 对象.RollbackTrans  
    
      取消所有从BeginTrans开始的工作并重新进行初始化。  
    
      这里只对最常用的Connection类进行了详细的介绍,如果希望进一步了解Database Access其他类库,可访问http://www.microsoft.com/ado/站点。  
    
       
    
      2.Ad Rotator(动态广告生成控件)  
    
     广告在网络上的效果越来越为人们所认识,“网盟”(WebUnion)就是一个很好的范例。一个好的广告发布程序并不容易编写,因为你要考虑包括图片出现的频度、图片的名字、链接的地址、显示的尺寸、还有速度、效率和维护等诸多的问题。当然,如果你们是一个象WebUnion这样的大型站点,则这是必须的;但如果你们只是一个小站点,只是希望简单地动态显示一些图片(包括链接)和方便维护,那么Ad Rotator动态广告生成控件绝对是你的首选。  
    
      为了使你有一个直观的认识,我们将先介绍建立动态广告的步骤,然后再细述其方法。产生动态广告,要涉及到三个文件:主文件main.asp、文本文件info.txt、副文件redi.asp。  
    
      main.asp为要显示广告的页面,内容为:  
    
     <% Set ad=Server.CreateObject("MSWC.AdRotator")%>  
    
     <%= ad.GetAdvertisement("info.txt")%>  
    
     第一行是创建Ad Rotator类的对象,第二行用于取得广告资料。  
    
      info.txt是广告的资料,内容为:  
    
     redirect redi.asp  
    
     width 400  
    
     height 60  
    
     border 1  
    
     *  
    
       
    
     1.jpg  
    
     http://www.gznet.com  
    
     广州视窗  
    
     20  
    
       
    
     2.gif  
    
     http://zyr.yeah.net  
    
     网络新地带  
    
     30  
    
       
    
      第一行表示当用户点击图片时,系统自动调用redi.asp程序,下面依次为广告的宽度、高度和边宽,再下面为图片的名字、链接的地址、广告说明(在html中的标记为alt=...)和显示的频度。  
    
      redi.asp是当用户点击图片时,系统需调用的文件,它只做一个redirect的工作。内容为:  
    
     <%response.redirect(request.querystring("url"))%>  
    
     整个编写和维护工作都非常简单。如果你希望增加、减少或修改某些广告图片和链接地址,只需修改info.txt文本文件即可。Ad Rotator类有三个属性,Border(指定广告图片的边宽)、Clickable(指定该广告图片是否提供链接功能)、TargetFrame(指定点击超链接后的浏览页面)和一个方法GetAdvertisement(读取广告信息)。如果你采用了信息档案文本(txt),就不需要考虑Ad所提供的属性了,如前面的例子。  
    
       
    
      3.File Access Component(FileSystemObject,文件存取控件)  
    
      该控件主要用于读取Unicode或ASCII码的文件,包含的方法如下:  
    
     ·CreateTextFile  
    
      建立一个TextStream的对象,并指向实际操作的文本或希望建立的文件名及目录,如:  
    
      set FILE=CREATEOBJECT("SCRIPTING.FileSystemObject")  
    
      set F1=FILE.CreateTextFile("C:\TEST.TXT",TRUE)  
    
      ;True表示允许覆盖,False表示不允许覆盖,这里缺省了一个参数unicode,缺省和False表示建立的文件是ASCII格式,True表示文件为Unicode格式。  
    
      F1.WRITELINE("你好!")  
    
      F1.CLOSE  
    
      TextStream对象具有以下方法(即上文中的F1)。  
    
      Close:关闭对象  
    
      Read:读取已打开的文件资料,带参数指明希望读取的字节数,如:F1.Read(characters)。  
    
      ReadAll:读取已打开文件的全部信息(返回字符串)。  
    
      ReadLine:读取已打开文件的一行信息(返回字符串)。  
    
      Skip:跳过已打开的文件信息,带参数指明希望跳过的字节数,如:F1.Skip(characters)。  
    
      SkipLine:跳过已打开文件的一行信息。  
    
      Write:把资料写入到已打开的文件中,如:F1.Write(string)。  
    
      WriteLine:把信息写入到已打开的文件中并换行。  
    
      WriteBlankLine:把空行写入到已打开的文件中,带参数指明希望写入的空行数,如:F1.WriteBlankLine(lines)。  
    
     ·OpenTextFile  
    
     打开一个已存在的文件,并建立一个TextStream对象。  
    
     语法:[object].OpenTextFile(filename[,iomode[,create[,format]]])  
    
     参数说明:  
    
      object:自定义的FileSystemObject对象名称。  
    
      filename:希望打开的文件名称。  
    
      iomode:可选参数为ForReading(读取)或ForAppending(编辑)。  
    
      create:指定如果文件不存在,是否自行建立,True表示建立,False表示不建立。  
    
      format:可选参数为TristateTrue(以Unicode方式打开)、TristateFalse(以ASCII方式打开)、TristateUseDefault(用文件缺省形式打开)和缺省时以ASCII方式打开。  
    
       
    
      4.Content Linking(文件链接控件)  
    
      该控件用于管理一些超链接信息,例如:我们经常会在html文本中有一些友情链接,指向其他站点,如果我们在多个页面上有这些信息,修改时就需要做多次修改。使用了该控件后,所有这些链接信息都可放在同一个文本文件中,修改时只需对该文本文件进行修改。其方法如下:  
    
      GetListCount:计算URL列的总数。  
    
      语法:GetListCount(文件名)  
    
      GetNextURL:读取下一个URL链接地址。  
    
      语法:GetNextURL(文件名)  
    
      GetPreviousDescription:读取前一个URL链接的描述。  
    
      语法:GetPreviousDescription(文件名)  
    
      GetListIndex:获取当前资料的索引号码。  
    
      语法:GetListIndex(文件名)  
    
      GetNthDescription:获取当前索引号码的超链接的描述。  
    
      语法:GetNthDescription(文件名,索引号码)  
    
      GetPreviousURL:读取上一个URL链接地址。  
    
      语法:GetPreviousURL(文件名)  
    
      GetNextDescription:读取下一个URL链接的描述。  
    
      语法:GetNextDescription(文件名)  
    
      GetNthURL::获取当前索引号码的超链接地址。  
    
      语法:GetNthURL(文件名,索引号码)  
    
      调用该控件,可用下列代码:  
    
      ...  
    
      <% set LINK=SERVER.CREATEOBJECT("MSWC.NEXTLINK")%>  
    
      <%COUNT=LINK.GETLISTCOUNT("LINK.TXT")%>  
    
      <%I=1%>  
    
      <%DO WHILE (I<=COUNT)%>  
    
      <A HREF="<%=LINK.GETNTHURL("LINK.TXT",I)%>">  
    
      <%= LINK.GETNTHDESCRIPTION("LINK.TXT,I)%>  
    
        
    
     
  
    
      <%I=I+1%>  
    
      <%LOOP%>  
    
      ...  
    
      LINK.TXT的文件格式如下:  
    
      www.gznet.com广州视窗  
    
      zyr.yeah.net网络新地带  
    
       
    
      5.BrowserType Capabilities(浏览器相容控件)  
    
      通过ASP的Server内嵌对象可以获取如IP地址等客户端的信息,但如要获取如客户端浏览器是否支持ActiveX控件、背景音乐等客户端浏览器的详细资料则只能求助于BrowserType控件。该控件通过把客户端的请求报头与Browscap.ini文件进行比较,得出客户端浏览器的详细资料,通过读取该控件的属性可以获取相应的资料。  
    
      属性:  
    
      ActiveXControls:是否支持ActiveX Controls。  
    
      Backgroundsounds:是否支持背景音乐。  
    
      Beta:Beta的版本。  
    
      Browser:浏览器名称。  
    
      Cookies:是否支持cookies。  
    
      Frames:是否支持frame。  
    
      Javascript:是否支持javascript。  
    
      Platform:客户端平台。  
    
      Tables:是否支持table。  
    
      Vbscripts:是否支持vbscript。  
    
      Versions:版本名称。  
    
       
    
      二.如何调用用户编写的ActiveX控件  
    
      调用一些free或用户编写的ActiveX控件是ASP一个非常重要的高级应用,下面将用一个例子具体描述其调用步骤。因特网上最常见的就是下载功能了,而上载功能却不是每个站点都能提供。上载就是通过浏览器把客户端的文件传到服务器上,该例子就是一个实现上载功能的应用。为了简单起见,这里利用一个free的ftp ActiveX控件(当然也可以自己编写)来实现该功能。该控件名称为ASPINET.FTP,可从http://www.genusa.com/asp/站点处下载。该例子含两个文件,一个用于完成客户端选取文件的功能(select.html)、一个用于完成接受信息流的功能(receive.asp)。  
    
      1.安装该控件  
    
      1) 解压  
    
      2) 把DLL文件移到系统的相应目录下(如:\winnt\system32 for NT),并修改系统注册表;如果不是很熟悉系统注册表的修改,可执行以下命令,系统会自动完成所有工作(你的系统需要有WinInet.dll文件)。  
    
      regsvr32 ASPInet.DLL  
    
      3) 运行MarkInet.exe,使注册表中所修改的信息生效。  
    
      2.select.html  
    
     <html>  
    
     <body>  
    
     <form method=post action="receive.asp">  
    
     客户端的文件名:<input type="file" name="cfilename" >  
    
     <br>  
    
     上载到服务器后的文件名:<input type="text" name="sfilename" >  
    
     ;你可通过网页输入希望上载到服务器上的文件名称  
    
     <br>  
    
     <input type="submit" name="submit" value="确定“>  
    
     </form>  
    
     </body>  
    
     </html>  
    
      3.receive.asp  
    
     <%

  cfilename=request("cfilename")

  ;读取客户端的文件名及路径

  sfilename=request("sfilename")

  ;读取希望上载到服务器上的文件名

  FTP_TRANSFER_TYPE_ASCII = 1

  FTP_TRANSFER_TYPE_BINARY = 2

  set ftpconn=SERVER.CREATEOBJECT("AspInet.FTP")

  ;创建ftp ActiveX控件对象

  if FtpConn.FTPPutFile("Ftp服务器地址“,"anonymous", "user@hostname.net",sfilename,cfilename,FTP_TRANSFER_TYPE_BINARY) then

  ;参数说明:依次为Ftp服务器地址、使用者名字、密码、Server端文件名及路径(相对于Ftp根目录而言,该例子使用缺省目录,即Ftp根目录)、客户端的文件名及路径、传送类型(ASCII/Binary)

   Response.Write "<p>FTP upload Success...<br>"  
    
     else  
    
      Response.Write "<p>FTP upload Failed...<br>"  
    
     end if  
    
     %>  
    
      如果你已经熟练地掌握了ASP各内嵌对象,包括ActiveX控件的使用方法,则一般的应用对于你来说已不是难事。但要提高开发效率,则必须充分利用微软提供的ASP开发工具InterDev配合开发。

[转]ASP中ActiveX控件的内嵌及调用相关推荐

  1. LabVIEW中ActiveX控件、ActiveX服务器和类型库注册

    LabVIEW中ActiveX控件.ActiveX服务器和类型库注册 如何在计算机上手动注册ActiveX控件(.ocx ).ActiveX服务器(.DLL和.EXE)以及类型库(.TLB )? 在L ...

  2. 当前安全设置禁止运行该页中activeX控件,该页无法正常显示

    运行services查看服务时,当前安全设置禁止运行该页中activeX控件,该页无法正常显示:打开一个project文件时,也显示 当前安全设置禁止运行该页中activeX控件,该页无法正常显示. ...

  3. ASP与ActiveX控件交互实战(一)

    龙卷风 关键字:ASP,ActiveX控件,数字签名,安全 ActiveX控件运行在客户端.我们可以获得客户端的一些信息,如IC卡的信息,客户端的验证等等.但是ActiveX控件也有许多缺点:客户端的 ...

  4. 在VS2010中ActiveX控件注册方法,使用regsvr32命令

    上一篇小编展示了如何设置VS2010自带的ActiveX控件的容器测试程序,现在为大家演示一下如何注册ActiveX控件. 首先简单了解一下ActiveX控件的知识,ActiveX控件:简单来说,就是 ...

  5. C#Winform中WebBrowser控件的特性和详细调用方法

    该博客系转发自http://www.ityoudao.com/Web/Csharp_590_1779.html,感觉此文章讲的不错,遂转发和大家分享.   WebBrowser控件简介 WebBrow ...

  6. 检测注册表中ActiveX控件是否被注册

    window.οnlοad=function() {            //在系统提示用户是否允许交互前判断当前控件是否加载,通过此属性判断当前是否注册了COM组件          var is ...

  7. 关于错误码0x80040154 MFC中ACtiveX控件没有注册的正确解决方案

    今天遇到一个问题,以前VC++6.0做好的工程文件在另一台电脑上无法运行,并且报错, CoCreateInstance of OLE control {67397AA3-7FB1-11D0-B148- ...

  8. c#编写activeX控件详细教程,底部附有下载地址

    1.新建windows窗体控件库,命名为 MyActiveXDemo,打开Properties/AssemblyInfo.cs,修改为如下: 2.打开工具箱,在自动生成的UserControl1.cs ...

  9. [转]使用C#开发ActiveX控件

    前言 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是 ...

最新文章

  1. 《LeetCode力扣练习》剑指 Offer 28. 对称的二叉树 Java
  2. 笔记-高项案例题-2015年下-需求管理
  3. C++new和delete
  4. Linux有趣小工具命令,终端中的乐趣:6个有趣的Linux命令行工具
  5. //随机生成1位大写字母\小写字母\数字
  6. 数据可视化demo_为更快读懂报表,我们将数据可视化了
  7. 大话Linux内核中锁机制之原子操作、自旋锁【转】
  8. python重载模块_Python 3.0中重载模块
  9. angular移除事件绑定事件绑定_002-js的三种事件绑定方式
  10. mysql schema 同步_GitHub - naryn/mysql-schema-sync: mysql表结构自动同步工具
  11. python爬虫 入门+进阶_python爬虫入门到进阶(三)
  12. win10/win11掉驱动问题
  13. lxml 爬取豆瓣top250
  14. 湖北工业大学校园网自动认证功能
  15. 手把手教你用java发送邮件
  16. js pug 代码_jquery.form.js的使用(基于pug)
  17. #边学边记 必修4 高项:对事的管理 第5章 项目成本管理 之 项目成本估算
  18. 类的练习:定义一个Tree(树)类,有成员ages(树龄),成员函数grow(int years)对ages加上years,age()显示tree对象的ages的值。
  19. 大厂女神节,到处都是企业文化的味道
  20. 【前端开发】开启鸿蒙系统2.0(华为mate手机)的安卓调试 - 开发者选项 - USB调试

热门文章

  1. 处理机器学习大数据的7种方法
  2. 《Java8实战》笔记(12):新的日期和时间API
  3. 对于Algorand的介绍
  4. Java JUC工具类--ForkJoin
  5. Redis Mac下安装与使用
  6. 犹太人从未透露的12个秘密(图)
  7. gcc中的内嵌汇编语言(Intel i386平台)
  8. SpringBoot:Actuator 监控管理工程各项信息
  9. you need to resolve your current index first 解决办法
  10. Springboot 之 Hibernate自动建表(Mysql)