2012-02-17 52 views
-1

我的需求是開發一個ActiveX控件,它可以將字節流發送到串口。 ActiveX控件應公開只有一個函數等爲網絡瀏覽器實現ActiveX控件

SendData(char* data, int nLen, int nPort) 

該函數應該能夠通過按壓在Internet Explorer呈現的Java開發的按鈕(32位和64位)被調用。我很困惑我是否應該使用MFC/ATL或瀏覽器助手對象進行無窗口ActiveX控件。將來我可能還需要支持Firefox。

任何幫助將不勝感激。

+0

我試着創建MFC ActiveX控件,但問題是當我嘗試加載它在mfc對話框來測試它我得到的控件圖像。我只是不想創建一個控件,而是一個可以調用的dll。我不知道從哪裏開始。 – Jeeva 2012-02-17 02:48:48

回答

0

雖然BHO會工作,ActiveX將套件更好地滿足您的要求。 BHO與ActiveX非常相似 - 它們都是在瀏覽器窗口中運行的本地代碼或託管代碼。不同之處在於BHO可用於所有頁面(在創建瀏覽器選項卡時實例化),而當創建它的頁面中的一些Javascript代碼(或<對象>標記)實例化不是BHO的ActiveX時。一個ActiveX的時間是頁面

ATL是一個更好的選擇使用VS嚮導,並創建一個基於ATL的COM in-proc服務器然後添加一個COM對象因爲你想從HTML調用它確保它是一個雙接口(即從IDispatch派生)添加你想要的IDL文件的方法在COM中,字符串參數的調用約定是BSTR,而數組的標準約定是SAFEARRAY。方法從你的Javascript代碼?

取決於你想如何從HTML頁面實例化你的對象。你可以有一個<對象classid ='clsid:' class guid'>或者你可以使用Javascript:var myobj = new ActiveXObject( ProgId)。兩種方法都是有效的。

+0

我創建了ATL dll。現在,我希望在用戶打開網頁並進行安裝時下載它。有可能這樣做嗎?有什麼必要的工具來創建設置 – Jeeva 2012-02-22 04:14:19

+0

@Jeeva,有幾種方法可以實現你想要的。一種方法是將元素的codebase屬性指向可從中下載CAB文件的URL。您可以使用makecab.exe或cabarc.exe實用程序創建CAB文件,或在Visual Studio中創建新的安裝項目。還有其他方法:我的最愛 - 在您的網頁上檢測您的ActiveX是否已安裝。如果未安裝,請將用戶重定向到專用安裝頁面,他可以在其中下載MSI,並說明如何設置ActiveX。 – Uri 2012-02-22 07:29:43