VC6.0從開發activex ocx控件到發布到網上全過程


ActiveX控件用於Web的過程是將控件嵌入主頁中,用戶通過瀏覽器訪問該主頁時,將主頁中的控件下載,並在用戶機器上注冊,以后就可在用戶的瀏覽器上運行。控件下載一次后就駐留在用戶本地機器上,下次再訪問相同的主頁時,可不再下載該控件,而是直接運行用戶本地的控件。

一:vc創建activex控件

創建一個activex控件,名稱為:test.ocx,創建步驟略。顯示結果如下:

為該控件增加一個方法void GetStr(LPCTSTR str),

該方法內部代碼如下:

這樣,GetStr方法就被加入了。

onDraw函數下代碼如下

下面,測試該方法,鼠標右鍵控件,選擇Invoke Methods,彈出如下對話框:

parameter中輸入hello,單擊Invoke按鈕,顯示如下:

那么如何在網頁中將參數傳遞給控件,讓其在網頁中顯示出來呢??稍后介紹

test.ocx控件放入c:\ceshi目錄下,到網上下載Makecert.exeCert2Spc.exeSigncode.exe,並一同放入c:\ceshi目錄下

 

二:ActiveX打包與發布

1)用到的工具如下所示

1.Makecert.exe ---證書創建工具
2.Cert2Spc.exe ---發行者證書測試工具
3.Signcode.exe ---文件簽名工具

2)ActiveX發布步驟

       打包activeX需要制作證書,具體用到makecert cert2spc signtool這三個工具,

現在我們將以上工具和.ocx控件放到同一個目錄c:\test.

1)單擊"開始"-->"運行(R"-->輸入"cmd"-->回車-->進入到操作的控件所在的目錄(需要將上面所說的工具,和ocx控件放到一個文件夾下);

2)創建inf文件,代碼如下

[version]   

signature="$CHICAGO$"

AdvancedINF=2.0

[Add.Code]

test.ocx=test.ocx

[test.ocx]

file-win32-x86=thiscab   

RegisterServer=yes

clsid={B649E664-D7CF-4481-A58E-AC8B4440794A}  

DestDir=11

FileVersion=1,0,0,1

上述代碼解釋如下:

file-win32-x86=thiscab    
//
告訴ie到哪里去得到這個dllfile一共包括三個部分,第一部分是file,這個永遠都是這樣的(至少目前來說);第二部分告訴聲明支持的OSwin32表示windowsmac就是蘋果MAC  OX了;第三部分是CPU類型,比如說x86  ppc  (Power  PC)  mips或者alpha 。其中“thiscab”是一個關鍵字,表示 CAB 包含此 DLL,也可通過指定一條絕對或相對路徑,從一個 HTTP 位置下載所需的 DLL   
例如:  file-win32-x86=http://www.mysite.com/mydir/NEEDED.DLL   

clsid={ B649E664-D7CF-4481-A58E-AC8B4440794A }    
//“clsid”
是將要安裝的控件的 CLSID  如何獲得呢------
DestDir=11    
//
它的值是dll將要存到本地硬盤的位置,如果它的值是10,則將dll放到\Windows或者\WinNT下;如果是11,則放到\Windows\System或者\WinNT\System32下;如果未指定任何 DestDir(典型情況),則代碼安裝在固定的 OCCACHE 目錄中。  
FileVersion=1,0,0,1
//
說明了atl90.dll的版本號  

3infdll打包成cab

cabarc  n  test.cab  test.inf  test.ocx這樣就將其打包成test.cab

(4) 生成cert證書

為得到簽名用的spc格式
 makecert /sv "test.pvk" /n "cn=test" test.cer
 
執行過程中會要求輸入密碼,密碼要一致,如下圖所示

 

     (5) 生成.spc文件

cert2spc test.cer test.spc之后,就在其目錄中多了一個test.spc文件

(6) cab文件進行簽名

運行singcode signwizard,此時會彈出對話框,操作如圖所示:

直接按下一步

找到指定目錄下的.cab文件

選擇自定義

選擇“從文件選擇”選項

下一步

按瀏覽找到.pvk文件

選擇md5

;默認直接按下一步

不填,下一步

不填,下一步

按完成

7

下面是一個嵌有ActiveX控件testHTML代碼示例:

 <HTML>

<HEAD>

<TITLE>New Page</TITLE>

</HEAD>

<BODY>

<object classid="clsid:BFB6032F-6F8D-4B7F-B0B3-6303D08348A4"id="test" CODEBASE="http://www.microdraw.com/down/microdrawocx.cab#version=1,0,0,1"

WIDTH=400

HEIGHT=200

ALIGN=center

</object>

</BODY>

</HTML>

千萬要注意:classid是可以從注冊表中查到,也可以從vc源代碼中獲取,打開test.odl文件,id如下所示:

這樣,一個網頁就創建成功啦!!!

最后,c:\test中有如下文件:

打開test.htm網頁顯示結果如下:

 

三:網頁中參數傳遞

接下來,來完成最核心的東西,從網頁中傳遞參數到控件顯示

修改html代碼如下:

<HTML>

<HEAD>

<TITLE>MyActiveX - Methods, Properties, and Events</TITLE>

<SCRIPT LANGUAGE="JavaScript">

 

function PassParameter()

{

    if (StringInput.value != " ")

    {

        test.GetStr(StringInput.value);

    }

}

</SCRIPT>

</HEAD>

<BODY>

<center>

MyActiveX - Methods, Properties, and Events Example

<p></p>

<OBJECT ID="test" WIDTH=350 HEIGHT=50

CLASSID="CLSID: BFB6032F-6F8D-4B7F-B0B3-6303D08348A4">

    <PARAM NAME="_Version" VALUE="65536">

    <PARAM NAME="_ExtentX" VALUE="2646">

    <PARAM NAME="_ExtentY" VALUE="1323">

    <PARAM NAME="_StockProps" VALUE="0">

</OBJECT>

<p></p>

Input Parameter: <INPUT TYPE ="text" NAME="StringInput" VALUE=" ">

<p></p>

<INPUT TYPE="button" NAME="Submit"

       VALUE="Submit" ONCLICK=PassParameter()>

</SCRIPT>

</center>

</BODY>

如上述代碼所示,我們在JavaScript中寫入函數PassParameter,該函數調用了控件中的方法GetStr,

當鼠標點擊按鈕submit時,就會調用該函數,進而間接調用該方法。

在編輯框中輸入hello,單擊submit,顯示結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM