如果你想通過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內部去:
將form傳遞到activex後,activex就可以操作這個form了,假如使用者單擊activex內部的乙個按鈕,然後提交這個表單:
private sub submit_click()
htmlform.action = "test.aspx?username=123"
...可以像js那樣任意設定form的方法和屬性
htmlform.submit
end sub
下面說第二個問題
2.如何標記activex控制項為安全指令碼?
如果不解決這個問題,我們前面的工作等於白幹。怎麼辦呢?需要修改客戶端登錄檔,
新增類似於下面這樣的項(用控制項的類 id 取代
hkey_classes_root/clsid//implemented categories/ 是用於標記指令碼安全的hkey_classes_root/clsid//implemented categories/ 是用於標記初始化安全的
06889605-b8d0-101a-91f1-00608cead5b3是我的控制項的guid但是怎麼去修改客戶端機器的登錄檔呢?這就需要在activex控制項安裝時操作了。因此,我們需要製作乙個activex安裝程式,這裡我們採用visual studio 2005來製作安裝程式。
1.開啟vs,新建乙個安裝專案
2.在解決方案資源管理器視窗當中右擊專案 > 新增 > 新增檔案 > 選擇你生成的ativex檔案,如hello.ocx.
3.再右擊專案,檢視 > 登錄檔
1> 按照上面的登錄檔節點順序依次新增登錄檔
2> 在登錄檔的最後一節中右擊 > 屬性視窗 > 設定alwayscreate為true,它表示此登錄檔項作為安裝專案的一分部,即使是空的。這樣設定後,在安裝的時候就會自動地修改客戶端登錄檔了。
4.生成安裝程式
5.執行安裝程式
6.瀏覽包含了該activex的頁面
你會發現,那個提示沒有了,而且不需要在ie中新增信任站點即可直接使用!是不是特別爽啊?
到此為止,介紹的差不多了。還有幾個問題需要研究:
1.不製作安裝包,上面的這個問題能否解決?
2.如何在acivex中儲存資料,比如乙個使用者名稱,第一次輸入後,第二次就記住它了。
有興趣的朋友可以和我一起**或指教,謝謝!
參考資料:
Python開發Activex元件
python強的功能就在於它無所不能。comserver.py class pythonutilities public methods splitstring reg progid python.utilities reg clsid def splitstring self,val return...
使用C 開發ActiveX控制項
最近弄了乙個在qt中使用c 控制項的功能,使用的方法是通過c 生產activex控制項,在qt中使用該activex控制項。本文這裡簡單的介紹一下如何用c 生成activex控制項。1.建立winform的usercontrol工程,在控制項的屬性頁中選擇 使程式集com可見 2.分配guid,在控...
使用C 開發ActiveX控制項
最近弄了乙個在qt中使用c 控制項的功能,使用的方法是通過c 生產activex控制項,在qt中使用該activex控制項。本文這裡簡單的介紹一下如何用c 生成activex控制項。1.建立winform的usercontrol工程,在控制項的屬性頁中選擇 使程式集com可見 2.分配guid,在控...