zoukankan      html  css  js  c++  java
  • Javascript调用ocx控件

    网上已经有很多相关的论述,不过最近我做个B/S的项目,还是费了不少劲。是他们写的太笼统,还是我过于愚钝呢,呵呵。

           拿我用的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”,可以看到
    Javascript调用ocx控件

          这里给出了一串ID号,估计是这个了。按上面的格式设置,然后在.js文件中调用这个.ocx控件:

           var m_ocx01 = document.getElementByIdx (“ocx01”);

           // 设置属性

           m_ocx01.UserName = “hazard”;

           …

           // 调用方法

           var bReturn = m_ocx01.Login ();

    到这里就要报错了:
    Javascript调用ocx控件

        试了很多回,都是这个错误。属性可以读写,可函数不能调用。

    解决办法:

           用Visual Stadio 6.0的工具:OLE View,

    Javascript调用ocx控件

        在它的 Type Libraries中找到注册的这个控件。

    Javascript调用ocx控件Javascript调用ocx控件

        可以看到它内部的组成:里面的那个uuid和刚才从注册表里找到的一样。

    Javascript调用ocx控件

        不过我要用的属性和方法都在那个coclass里面,而它的uuid和上面的不同。

    Javascript调用ocx控件

    将《object》classid改写,再次调用方法就成功了。

    另:

    Javascript调用ocx控件

    这里面有很多的注册控件和组件。如果是* Library类型的,则可以用

        var obj = new ActiveXObject (“COLBCATLib.COLBCatalog”);

    的方法得到它的对象,然后直接操作就可以了。而* Control类型的,则只能用

        var m_ocx01 = document.getElementByIdx (“ocx01”);

    的方法得到。而且由于它不能直接创建coclass的对象,所以要注意uuid的变化。

  • 相关阅读:
    BZOJ 1578: [Usaco2009 Feb]Stock Market 股票市场( 背包dp )
    BZOJ 3315: [Usaco2013 Nov]Pogo-Cow( dp )
    BZOJ 3477: [Usaco2014 Mar]Sabotage( 二分答案 )
    BZOJ 2427: [HAOI2010]软件安装( dp )
    BZOJ 3211: 花神游历各国( 线段树 )
    POJ 2528 线段树 + 离散化
    POJ 1151 Atlantis 线段树+离散化+扫描线
    POJ1177 Picture 线段树+离散化+扫描线
    BZOJ1016: [JSOI2008]最小生成树计数
    POJ2104 K-th Number 划分树 模板题啊
  • 原文地址:https://www.cnblogs.com/liang-ling/p/5201081.html
Copyright © 2011-2022 走看看