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