如果你想通過C#和VB.net來做ActiveX的請,我勸你儘快打消這個念頭。.net認為ActiveX技術是過時的,所以C#和Vb.net都做不了ActiveX。C#和VB.net可以做類似的東西,但它不叫ActiveX而是叫windows控制項,前提是用戶端機器必須安裝了.net framework才能運行。但是,目前很多機器都沒有安裝.net framework,至少也要等到Vista普及得差不多的時候,ActiveX技術才可能退出曆史舞台。 那麼,我應該採用什麼技術開發ActiveX呢?可以採用VB6和C++或C++.net。由於本人不懂C++,本以為會和C#差不多,用VS建立了一個MFC ActiveX項目,開啟一看,代碼像天書一樣完全看不懂,所以決定採用VB6。雖然VB偶也不會,但是VB還是相對要簡單一些,資料也多一些。 如何用VB開發ActiveX在這裡不細說,可以參考這篇文章:ASP與ActiveX控制項互動實戰(http://blog.csdn.net/online/archive/2004/08/09/68872.aspx) ,講得非常詳細。 這裡只介紹本人遇到的幾個難題: 1.如何在ActiveX內部提交所在網頁的表單? 可以用js將form傳遞到AcitveX中去。用VB操作Html元素(dom),需要添加一個引用,方法是:工程 > 引用 > 勾選Microsoft HTML Object Library > 確定 然後在代碼中,添加一個接受用戶端form的方法: Public HtmlForm As HTMLFormElement '記錄htmlform值 Public Sub Init(ByRef form As HTMLFormElement) Set HtmlForm = form End Sub 用戶端html將form傳遞到ActiveX內部去: <html xmlns="http://www.w3.org/1999/xhtml" > <head> <script type="text/javascript"> window.onload = function(){ document.getElementById("KelliLogin").Init(form1);//把form傳遞到ActiveX內部中去 } </script> </head> <body> <form id="form1"> <div> <object classid="clsid:{1179091E-1F78-4D09-B876-B7C1ABEA4BF3}" id="KelliLogin" width="198" height="88"></object> </div> </form> </body> </html> 將form傳遞到ActiveX後,ActiveX就可以操作這個form了,假如使用者單擊ActiveX內部的一個按鈕,然後提交這個表單: Private Sub Submit_Click() HtmlForm.Action = "test.aspx?username=123" ...可以像js那樣任意設定form的方法和屬性 HtmlForm.Submit End Sub 下面說第二個問題 2.如何標記Activex控制項為安全指令碼? 這個問題其實是第一個問題引出來的,通常ActiveX控制項在開發並註冊後,一旦在網頁中運行,IE並不認為這是一個指令碼安全的,會彈出一個IE提示:已經阻止此網站以不安全的方式使用ActiveX控制項。因此,此頁可能現實不正確。 如果不解決這個問題,我們前面的工作等於白乾。怎麼辦呢?需要修改用戶端註冊表, 添加類似於下面這樣的項(用控制項的類別識別碼 取代 {06889605-B8D0-101A-91F1-00608CEAD5B3}),使您的鍵同下列類別識別碼 相關聯: HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4} HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}但是怎麼去修改用戶端機器的註冊表呢?這就需要在ActiveX控制項安裝時操作了。因此,我們需要製作一個ActiveX安裝程式,這裡我們採用Visual Studio 2005來製作安裝程式。 1.開啟vs,建立一個安裝項目 2.在方案總管視窗當中右擊項目 > 添加 > 添加檔案 > 選擇你產生的AtiveX檔案,如Hello.ocx. 3.再右擊項目,視圖 > 註冊表 1> 按照上面的註冊表節點順序依次添加註冊表 2> 在註冊表的最後一節中右擊 > 屬性視窗 > 設定AlwaysCreate為true,它表示此登錄機碼作為安裝項目的一分部,即使是空的。這樣設定後,在安裝的時候就會自動地修改用戶端註冊表了。 4.產生安裝程式 5.運行安裝程式 6.瀏覽包含了該ActiveX的頁面 你會發現,那個提示沒有了,而且不需要在IE中添加信任網站即可直接使用!是不是特別爽啊? 到此為止,介紹的差不多了。還有幾個問題需要研究: 1.不製作安裝包,上面的這個問題能否解決? 2.如何在AciveX中儲存資料,比如一個使用者名稱,第一次輸入後,第二次就記住它了。 有興趣的朋友可以和我一起探討或指教,謝謝! 參考資料: http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vccore/html/_core_upgrading_an_existing_activex_control_to_be_used_on_the_internet.asp http://wenhaobing.spaces.live.com/blog/cns!9d6443eb4bff9145!143.entry |