ActiveX (.ocx)的写法,及在IE里调用
ActiveX組件編制與ASP接口應用
ActiveX
ActiveX是Microsoft為了使開發人員能夠把計算機桌面環境與構成Internet及其大量資源的環境集成起來,同時保護在Windows中現有的開發投資。ActiveX包括對兩個現有Microsoft技術的一系列擴充和增強,這兩個技術是:Win32 API和組件對象模型(COM),對象鏈接和嵌入(OLE)應用是基于它構造的。
所謂ActiveX組件是指一些可執行的代碼,比如一個 .exe,.dll 或 .ocx 文件,它們在提供對象時遵循ActiveX 的規范。通過ActiveX技術,程序員就能夠把這些可復用的軟件組裝到應用程序或者服務程序中去了。
ASP
ASP是服務器端的腳本編寫環境,您可用它來創建動態 Web 頁或生成功能強大的Web應用程序。ASP頁是包括HTML標記、文本和腳本命令的文件。ASP頁可調用ActiveX組件來執行任務。
ActiveX組件的創建、注冊
你可以為大量的Internet和Intranet高級應用創建ActiveX組件,現在就以一個實例來探討ActiveX組件的創建、注冊和在ASP頁中的使用。
程序員可以用任何一種支持自動化的程序語言開發ActiveX組件。選擇程序語言應考慮:你對這種語言的熟悉程度,工具支持,運行時性能,線程模型,代碼復雜程度,已編譯代碼的大小??梢杂脕砭帉懽詣踊M件的語言和產品有:Microsoft Visual C++, Microsoft Visual Basic和Java。本文使用的實例采用Microsoft Visual Basic編寫。
ASP本身也具有幾類內嵌的ActiveX組件,其中包括File Access組件,但是一般只用于客戶端的文件讀寫;如果要實現對服務器端的文件讀寫,就需要給Winnt Server的Internet匿名訪問帳戶IUSER_XXXX(下劃線后為Winnt Server的主機名)對Web Site的寫權限,這樣就造成系統安全的漏洞。通過創建一個讀寫特定文件的服務器端ActiveX組件,就可以保證系統安全性。
現在簡單敘述一下在Microsoft Visual Basic 5.0中編制ActiveX組件的過程:
1. 打開Microsoft Visual Basic 5.0,在新建工程窗口中選擇“ActiveX DLL”(圖1);
2. 在工具欄中選擇“添加類模塊”,添加類、屬性、方法等(圖2);
3. 可以給新添加的類模塊起名、設置屬性。本文的ActiveX組件的類如下,注意FileText類的Instancing屬性設置為“5-MultiUse”(圖3);
4. 然后還需要給ActiveX組件提供一個客戶方調用入口,選擇工具欄“添加模塊”,然后鍵入一個空的main()過程以作為客戶方調用的入口(圖4);
5.把工程名設置為“Stone”,注意:工程名加類名“Stone.FileText”是以后在ASP中調用此ActiveX組件的“ProgID”;
6. 在菜單中選擇“文件生成FileText.dll”,把文件編譯為DLL文件(圖5);
7. 把FileText.dll文件Copy到“C:\Winnt\ system32\”路徑下,在此路徑執行“C:\Winnt\system32\ regsvr32 FileText.dll”在Winnt注冊表中注冊此DLL文件。完成后,可以在Winnt注冊表中查到“Stone .FileText”組件的CLASSID是“{425BDE6C-D38F-BA80-00104B27C01D}”,表明組件已經正確注冊。
在ASP頁面調用自制ActiveX組件
用以下兩種方法在ASP頁面調用上述的組件:
A. 靜態調用
使用HTML標準Tag :<Object>和</Object>,示例如下:
<OBJECT
id=FT
classid="clsid: 425BDE6C-D38F-BA80-00104B27C01D"
width=1
height=1
align=left>
之后,就可以在ASP語句中使用此ActiveX組件的幾個方法了;
B. 動態調用
使用ASP內嵌Server對象的CreateObject()方法:
<%
Set FT = Server.CreateObject("Stone.FileText") '創建組件的實例(即對象)
CurPath = server.mappath("Sms/")
'得到虛擬路徑“Sms/”的Winnt實路徑
CurPath = CurPath & "\" & RS_Movie("Link_Filename") '得到全路徑
FT.OpenReadText CurPath, 1
'使用“Stone.FileText”組件的OpenReadText方法打
'開一個文件
%>
結束語
通過上面的例子,讀者可以看到:ActiveX組件是應用功能在Internet/Intranet上實現的最有效方法。讀者可以嘗試用ActiveX和ASP結合來完成許多復雜的應用功能開發。讀者可以從以下網址得到很多功能強大的免費ActiveX組件、ActiveX控件,用以研究、借鑒:
?
用VC6.0開發ActiveX控件是很方便的,下面用一個HelloWord小例子介紹一下:
打開VC6.0,新建一個工程(Projects),選取擇MFC ActiveX ControlWizard,填上工程名(Project name),
選好工程路徑,點OK.
第一個屬性頁,可以設置本工程包函幾個控件,是否給控件加運行許可等,現在保持默認.點完成.
ActiveX控件是運行在容器里的,如果想在VC6里測試工程,可以點執行,系統會提示讓指定執行文件.點查看,
找到這個文件:Microsoft Visual Studio\Common\Tools\TSTCON32.EXE,打開是一個測試ActiveX控件的窗口.
然后點編輯(Edit).插入新控件(insert new Control),找到自己的控件,快速打出自己控件的名字就能自動找到.
要想在外部程序調用ActiveX的方法,需要把方法發布出去:
點視圖(View).類向導(ClassWizard),選自動控制(Automation)選項卡,點添加方法鍵添加一個方法HelloWord.
外部名好內部名都寫HelloWord.
想在IE里調用ActiveX控件,要在注冊表里注冊,編譯鏈接后,系統會自動寫入注冊表信息.也可以自己手動注冊,
命令是regsvr32,要注冊自己寫的控件,只要在運行對話框里寫:regsvr32 *.ocx提示成功即可.反注冊加 -u 參數.
注冊以后可以到注冊表里找到自己注冊的控件,在運行里打regedit打開注冊表編輯器,用控件的名子查找到控件,
把CLSID復制出來,在網面里調用要用到這個ID.
然后新建一個HTML文件,首先要加載控件:
<object id="myocx" classid="clsid:E5CB2C66-66E1-4FFD-81D7-08B08BFB8D65"
codebase="C:\Program Files\Microsoft Visual Studio\MyProjects\test1\Debug\Hello.ocx"></object>
然后就可以寫一個JS函數調用控件里的方法:
<script type="text/javascript">
??? function sayHello()
??? {
??? ??? document.getElementById("carder").sayHello();
??? }
</script>
如果想在OCX里面加載DLL,要把DLL文件放到C:\WINDOWS\system32文件夾下.不然會找不到文件.
其實ocx控件是標準控件, VB/VC開發要用到打量的ocx, 至于在哪里調用都是可以的(win平臺下). 用Interdev可以很方便的把ocx嵌入asp中, 支持鼠標拖放, 直接修改屬性就可以了.
轉載于:https://www.cnblogs.com/zgqys1980/archive/2008/08/25/1275481.html
總結
以上是生活随笔為你收集整理的ActiveX (.ocx)的写法,及在IE里调用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: codesmith用access的mdb
- 下一篇: EPML schema(附带用myecl