|
http://hi.baidu.com/redtramp/blog/item/318b1708344b84dc63d986d9.html
本文將首先介紹如何使用Visual Studio開發(fā)一個簡單的ActiveX控件,然后介紹ActiveX控件開發(fā)相關的基礎知識,比如方法,屬性和事件等,最后介紹如何利用這些知識,實現(xiàn)ActiveX控件和網(wǎng)頁頁面之間的通信。
簡介 ActiveX是由Microsoft在90年代中期提出的一項技術。利用ActiveX技術,開發(fā)者可以創(chuàng)建像Java小程序applet一樣的小型應用程序。這些應用程序可以被下載然后在Microsoft的瀏覽器中運行。這篇文章是為那些想學習如何開發(fā)他們的第一個ActiveX控件的Visual C++開發(fā)者準備的。 當我自己嘗試學習這些技術的時候,我發(fā)現(xiàn)很多針對ActiveX技術的資料都已經(jīng)不再適用了,都已經(jīng)過時了,或者丟失了很多關鍵性的信息,這些都使得我在為我的項目創(chuàng)建一個ActiveX控件的時候,變得困難重重。這篇文章將幫助你實現(xiàn)ActiveX網(wǎng)頁控件開發(fā)的快速入門。本文將首先介紹如何使用Visual Studio開發(fā)一個簡單的ActiveX控件,然后介紹ActiveX控件開發(fā)相關的基礎知識,比如方法,屬性和事件等,最后介紹如何利用這些知識,實現(xiàn)ActiveX控件和網(wǎng)頁頁面之間的通信。 另外,你也將學習到如何在默認的Internet Explorer安全設置下取消掉控件加載過程中的警告或者錯誤提示,使你的控件成為一個“安全”的ActiveX控件。 在本文中,我們將創(chuàng)建一個實際的ActiveX控件。在控件加載的過程中,它將顯示一個動態(tài)的進度條,告訴用戶控件正在加載并處理信息。同時,這個控件也將展示如何在ActiveX控件和Web頁面之間傳遞信息。本文將引導你一步步地利用Microsoft Visual Studio 2005完成ActiveX控件的開發(fā)工作。 創(chuàng)建ActiveX控件 要創(chuàng)建一個ActiveX控件,首先啟動Visual Studio 2005,執(zhí)行下面這些步驟: 1.選擇“文件”菜單,然后選擇“新建”->“項目”。 3.將新項目命名 為“MyActiveX”,然后選擇項目的保存目錄,最后點擊“確定”按鈕,關閉“新項目”對話框,進入“MFC ActiveX控件”向導。 ![]() 圖1 新項目對話框 4.在“MFC ActiveX控件”向導中,如下圖2所示,選擇左側的“控件設置”,進入控件參數(shù)設置頁 5.在“Create control based on”下拉列表中選擇“STATIC”。這表示我們使用的是一個靜態(tài)控件,因為我們僅僅是顯示輸出而不接收輸入。 ![]() 圖2 MFC ActiveX 控件向導對話框 7.點擊“Finish”按鈕關閉整個“MFC ActiveX控件向導”對話框,然后向導就會為我們創(chuàng)建整個項目的源代碼。默認情況下,向導創(chuàng)建的項目是使用共享MFC DLL的,這里我們需要改變這一設置。因為如果目標機器上沒有安裝MFC DLL,那么ActiveX控件就不會運行。我們常??吹揭恍┚W(wǎng)頁上的ActiveX控件被顯示為紅色的叉叉,很多都是這個原因造成的。 8.向導創(chuàng)建了如下三個類: 為ActiveX控件創(chuàng)建網(wǎng)頁 光完成了ActiveX控件還不行,因為ActiveX控件無法單獨運行,所以我們還需要為ActiveX控件創(chuàng)建相應的測試頁面。如果想為我們的ActiveX控件創(chuàng)建一個默認的測試頁面,最佳的工具就是Microsoft ActiveX Control Pad。這是一個免費的工具,我們可以從微軟的網(wǎng)站上下載得到。 當我們第一次運行ActiveX Control Pad的時候,它將創(chuàng)建一個默認的HTML頁面。接下來,我們需要將ActiveX控件插入到這個頁面中。在<BODY>標簽內(nèi)的某個位置右鍵單擊,選擇“Insert ActiveX Control”,在彈出的“Insert ActiveX Control”對話框中,選中我們剛剛創(chuàng)建的ActiveX控件MyActiveX,然后點擊“OK”關閉對話框,將ActiveX控件插入到頁面中。
![]() 圖5 插入ActiveX控件 ActiveX Control Pad提供了兩個對話框,供我們對ActiveX控件的各個屬性進行修改編輯。屬性對話框用于修改ActiveX控件的各項屬性。而“編輯ActiveX控件(Edit ActiveX Control)”對話框用于手動地對ActiveX控件進行修改。當然,我們也可以不使用對話框,直接編輯HTML代碼達到相同的效果。在代碼中找到OBJECT ID標簽,如下圖6所示,修改它的尺寸參數(shù)為“WIDTH=350”和“HEIGHT=50”。完成代碼的修改后,將這個文件保存為myactivex.htm,放置到IIS服務器的網(wǎng)站根目錄wwwroot下。 ![]() 圖6 在ActiveX Control Pad中編輯頁面 現(xiàn)在,我們就可以使用IE打開http://localhost/myactivex.htm對ActiveX控件進行測試了。在ActiveX控件加載的過程中,如果你得到一些警告消息,點擊“OK”略過就可以了。正常情況下,你將看到頁面中顯示的一個進度條GIF動畫。如果你沒有看到動畫,或者是僅僅在ActiveX控件的位置顯示一個紅色的叉叉,這可能是你的瀏覽器的安全設置,阻止了ActiveX控件的加載和運行。要解決這個問題,請修改你的瀏覽器的安全設置,使其所有關于ActiveX的選項都在“允許(enabled)”狀態(tài)。 ![]() 圖7 瀏覽器中的MyActiveX控件 接下來,我們將讓我們的控件成為一個“簽名的”或者是“安全的”控件,以此來解決在ActiveX控件加載過程中所產(chǎn)生的那些警告信息。構建一個“簽名的”ActiveX控件。要想創(chuàng)建一個“簽名的”ActiveX控件,你必須從一些認證機構,例如Thawte,Verisign和GeoTrust,獲得代碼簽名證書(Code Signing Certificate)。通過這項服務,他們將對你進行認證同時為你提供用于對ActiveX控件進行簽名的證書文件。這些用于應用程序簽名的證書文件包括mycert.spc和mykey.pvk.兩個文件。 為了對ActiveX應用程序進行簽名,我們需要將這個程序的所有組件打包成CAB文件。這個CAB文件將被從網(wǎng)站上下載到目標機器上,然后ActiveX控件會通過下載的CAB文件被安裝到目標機器上。要啟用這項功能,我們必須在ActiveX控件的版本信息VERSIONINFO結構體中定義OLESelfRegister變量。在VS 2003及其之前的Visual Studio之中,這一變量是被自動添加的。但是在Visual Studio 2005中,默認情況下VERSIONINFO結構體中并不包含這一變量,我們需要按照下面的示例手動添加OLESelfRegister這一變量: VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1 PRODUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x4L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904e4" BEGIN VALUE "CompanyName", "TODO: <Company name>" VALUE "FileDescription", "TODO: <File description>" VALUE "FileVersion", "1.0.0.1" VALUE "InternalName", "MyActiveX.ocx" VALUE "LegalCopyright", "TODO: (c) <Company name>. All rights reserved." VALUE "OLESelfRegister", "\0" VALUE "OriginalFilename", "MyActiveX.ocx" VALUE "ProductName", "TODO: <Product name>" VALUE "ProductVersion", "1.0.0.1" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1252 END END 在簽名ActiveX控件之前,ActiveX控件應該被打包成CAB文件。這個CAB文件同樣還包含一個INF文件,它將用于安裝你的ActiveX控件。要創(chuàng)建CAB文件,你需要Microsoft Cabinet Software Development Kit中的cabarc.exe。下面的INF文件演示了如何將我們的MyActiveX控件打包到CAB文件中。對于其中的CLSID,你需要將其修改為跟之前我們使用ActiveX Control Pad創(chuàng)建的HTML頁面中OBJECT ID相同的值。 [Add.Code]
myactivex.ocx=myactivex.ocx myactivex.inf=myactivex.inf [myactivex.ocx] file=thiscab clsid={36299202-09EF-4ABF-ADB9-47C599DBE778} RegisterServer=yes FileVersion=1,0,0,0 [myactivex.inf] file=thiscab 我們可以通過下面的DOS命令創(chuàng)建CAB文件。這里需要注意的是:OCX文件和INF文件必須跟你所執(zhí)行的cabarc.exe在同一個目錄,否則CAB文件在被下載后將無法正確的解壓縮。這也是一個導致ActiveX控件被顯示為紅色叉叉的重要原因。 signcode -n "myactivex" -i
http://www. -spc mycert.spc -v mykey.pvk -t http://timestamp./scripts/timstamp.dll myactivex.cab 在上面的例子中,http://www.應該被替換成你的ActiveX控件的說明頁面,通過這個頁面,你可以為用戶提供更多的關于這個控件的信息。 ![]() |
|
|