我的要求是开发一个ActiveX控件,它可以将字节流发送到串口。 ActiveX控件应该只显示一个函数,如
SendData(char* data, int nLen, int nPort)
应该能够通过按下在Internet Explorer中呈现的java中开发的按钮(32位和64位)来调用此函数。我很困惑我是否应该使用MFC / ATL或浏览器助手对象进行无窗口ActiveX控件。将来我也可能需要支持Firefox。
任何帮助将不胜感激。
答案 0 :(得分:0)
虽然BHO可以工作,但ActiveX可以更好地满足您的要求。 BHO与ActiveX非常相似 - 它们都是在浏览器窗口中运行的本机代码或托管代码。不同之处在于BHO可用于所有页面(在创建浏览器选项卡时实例化),而不是BHO的ActiveX在创建它的页面中的某些Javascript代码(或使用< object>标签)时实例化。 ActiveX的生命周期是页面。
ATL是更好的选择。使用VS向导,并创建一个基于ATL的COM进程内服务器。然后添加一个COM对象。由于您想要从HTML调用它,请确保它是双接口(即从IDispatch派生)。将您想要的方法添加到IDL文件中。在COM中,字符串参数的调用约定是BSTR,而数组的标准约定是SAFEARRAY。你打算如何从你的Javascript代码中调用该方法?
取决于您希望如何从HTML页面实例化对象。你可以有一个< object classid ='clsid:' class guid '>或者您可以使用Javascript:var myobj = new ActiveXObject( ProgId )。两种方法都有效。