Javascript调用ocx控件
拿我用的XMPPClient.ocx为例:
《object classid="clsid:D6D2E2CC-2DB1-4361-AA 7C-3198C6B6F296" id="ocx01" name="ocx01" codebase="WEB-INF/lib/XMPPClient.ocx" width="32" height="32"》《/object》
这是大多数在页面上加.ocx控件的做法。那么那个classid怎么得到的?大多数网上的讨论并没有给出。——估计是太EASY了,不过咱是菜鸟啊。
将控件注册后,(这一步倒是讲解的人很多),“开始——运行——regedit”打开注册表,查找“XMPPClient.ocx”,可以看到这里给出了一串ID号,估计是这个了。按上面的格式设置,然后在.js文件中调用这个.ocx控件:
var m_ocx01 = document.getElementByIdx (“ocx01”);
// 设置属性
m_ocx01.UserName = “hazard”;
…
// 调用方法
var bReturn = m_ocx01.Login ();
到这里就要报错了:试了很多回,都是这个错误。属性可以读写,可函数不能调用。
解决办法:
用Visual Stadio 6.0的工具:OLE View,
在它的 Type Libraries中找到注册的这个控件。
可以看到它内部的组成:里面的那个uuid和刚才从注册表里找到的一样。
不过我要用的属性和方法都在那个coclass里面,而它的uuid和上面的不同。
将《object》的classid改写,再次调用方法就成功了。
另:
这里面有很多的注册控件和组件。如果是* Library类型的,则可以用
var obj = new ActiveXObject (“COLBCATLib.COLBCatalog”);
的方法得到它的对象,然后直接操作就可以了。而* Control类型的,则只能用
var m_ocx01 = document.getElementByIdx (“ocx01”);
的方法得到。而且由于它不能直接创建coclass的对象,所以要注意uuid的变化。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步