日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[转]ASP中ActiveX控件的内嵌及调用

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转]ASP中ActiveX控件的内嵌及调用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
懂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控件的内嵌及调用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。