VB6开发 用户控件OCX ,在IE网页中调用

比如 用户控件名为  Cti_Client.ocx

一、安装VB运行环境

       方法1   用VB6 打包  或 用 SetupFactory 7.0.1 打包工具 

       方法2   直接安装 VB6

二、注册OCX

       1.将  Cti_Client.ocx 手动复制到 System32目录下

            或 用 *.bat 执行   copy Cti_Client.ocx %windir%\system32\Cti_Client.ocx

       2.在运行中 输入 cmd ,进到 system32目录下 执行  regsvr32  Cti_Client1100504.ocx

           或 用 *.bat 执行   regsvr32 %windir%\system32\Cti_Client1100504.ocx

      注:win7  sp1  64位  IE11 亲测好用 方法

   将 CtiClient.ocx  和  CtiClient.oca 两个文件 复制到  

            c:\windows\system32\  和 c:\windows\SysWOW64目录下

           进到 system32目录下 找cmd右键用 管理员运行 

             

             提示注册成功

三、新建 index.html  代码如下

<OBJECT ID="CtiClient"
    CLASSID="CLSID:5C506FA6-F244-4534-A1CA-58BA002A889C"
    CODEBASE="CtiClient.CAB#version=1,0,0,0" height="300px" width="400px">
</OBJECT>

其中 CLASSID  在注册表中 查找

在运行中  输入 regedit  进入注册表

 输入ocx的文件名 进行查找

 注:这个 CLASSID  可能会有多个,逐个试试

 用IE打开 index.html 后,有风险提示,点允许阻止的内容

 在 IE 安全中 将 允许  ActiveX 控件 和 JavaSrcipt 权限打开

在网页中就能显示 OCX控件了

 Html代码

<td>
    <table>
        <tr>
             <td>
                <OBJECT ID="CtiClient"
                    CLASSID="CLSID:5C506FA6-F244-4534-A1CA-58BA002A889C"
                    CODEBASE="CtiClient.CAB#version=1,0,0,0" height="300px" width="400px">
                </OBJECT>
                <br>
                <a href="javascript:ocxWebSocketInit()" >ocxWebSocketInit</a>
                <br>
                <a href="javascript:ocxWebSocketOpen()" >ocxWebSocketOpen</a>
                <br>
                <a href="javascript:ocxWebSocketClose()" >ocxWebSocketClose</a>
                <br>
                <input type="text" id="txtSendMsg"  name="txtSendMsg"  style="width:200px;"  value="@&l_login :1005,1005,1005"></input>
                <button type="button" style="width:80px;" onclick='ocxWebSocketSendMsg(document.getElementById("txtSendMsg").value);'  >SendMsg</button>
                <br>
                <h5 class="panel-title">OCX收到消息</h5>
                <div id="div_OcxMsg" style="height:350px;width:400px;overflow:auto;background-color:#F5F5F5;"><h3> </h3></div>
             </td>
        </tr>
    </table>
</td>
</tr>
</table>
    <script type="text/javascript">
        //全局变量-----------------------------------
        var _ocxIsWebSocketInit="false";//ocx不能初始化二次
        var _strAgentName ="1005";// GET['AgentName']; 
        var _strPwd="1005";// GET['Pwd'];
        var _strExtTel="1005";//GET['ExtTel'];//分机号码 LAPTOP-QURTS17G

        var _strServiceIp='192.168.1.8';//Cti服务器IP地地址
        var _strServiceIp_index=_strServiceIp+':5011/chat/';

        document.getElementById('txtAgentName').value =_strAgentName;
       
    </script>

    <script type="text/javascript">
        //测试用
        function ocxWebSocketInit() {
            //var url = 'ws://192.168.1.8:5011/chat/';
            CtiClient.WebSocketInit(_strServiceIp_index); 
            _ocxIsWebSocketInit=true;
        }
        function ocxWebSocketOpen()
        { CtiClient.WebSocketOpen(); }

        function ocxWebSocketClose()
        { CtiClient.WebSocketClose(); }
        
        //发送消息 
        function ocxWebSocketSendMsg(strSendMsg){ 
            try
            {
                //alert(strSendMsg);
                //console.log(strSendMsg);//调试
                CtiClient.WebSocketSendMsg(strSendMsg);//发送
                SocketMsgListAdd( 'send', strSendMsg);//显示
            }
            catch (ex)
            {
                alert('ocxWebSocketSendMsg() 发送消息时出错! '+ strSendMsg+ ' '+ex);
            }    
        }
        //显示消息
        function ocxShowMsg(strMsg){
            try { 
                //握手不显示
                /*
                if(strMsg=="@&c_handrequest:"){ 
                    return;
                }
                if(strMsg=="@&c_handok"){
                    return;
                }*/

                //<p>显示方式
                if(document.getElementById("div_OcxMsg").innerHTML.length>2000)//清空
                { document.getElementById("div_OcxMsg").innerHTML=""; }
                if(document.getElementById("div_OcxMsg").innerHTML==""){
                    document.getElementById("div_OcxMsg").innerHTML=strMsg;
                }else{
                    document.getElementById("div_OcxMsg").innerHTML=document.getElementById("div_OcxMsg").innerHTML +"</br>" +strMsg;            
                }
            } catch (ex) {
                alert('显示Ocx WebSocket消息时出错! ocxShowMsg ' + strMsg + ' '+ex);
            }
        }
    </script>
    
    <!-- CtiClient控件 收到消息事件 -->
    <SCRIPT type="text/javascript" FOR="CtiClient" EVENT="eCtiWebSocketRec(strMsg)" >
        ocxShowMsg(strMsg);//ocx收消息 显示 仅测试用
        SocketMsgListAdd( 'rec', strMsg);//收发消息 显示
        RecTcpMessage(strMsg);//CtiMessage.js 处理服务器收到的消息    
    </SCRIPT> 
    <!-- CtiClient控件 连接成功事件 -->
    <SCRIPT type="text/javascript" FOR="CtiClient" EVENT="eCtiWebSocketOpen(strMsg)" >
        ocxShowMsg(strMsg);//ocx收消息 显示 仅测试用
        SocketMsgListAdd( 'rec', strMsg);//收发消息 显示
    </SCRIPT> 
    <!-- CtiClient控件 关闭事件 -->
    <SCRIPT type="text/javascript" FOR="CtiClient" EVENT="eCtiWebSocketClose(strMsg)" >
        ocxShowMsg(strMsg);//ocx收消息 显示 仅测试用
        SocketMsgListAdd( 'rec', strMsg);//收发消息 显示
    </SCRIPT> 
    <!-- CtiClient控件 Error事件 -->
    <SCRIPT type="text/javascript" FOR="CtiClient" EVENT="eCtiWebSocketError(strMsg)" >
        ocxShowMsg(strMsg);//ocx收消息 显示 仅测试用
        SocketMsgListAdd( 'rec', strMsg);//收发消息 显示
    </SCRIPT> 

 

    

 

 

 

 

 

 

 

 

 

 

 

 

 

     
posted @ 2022-10-09 13:49  海乐学习  阅读(549)  评论(0编辑  收藏  举报