VB6开发 用户控件OCX ,封装webSocket功能,并在 IE网页中调用

CtiClient3-WebSocket-OCX使用说明

Win7  sp1  64位  IE11现场测试好用

一、安装CtiClient3-Setup.exe  ( SetupFactory 7.0.1 打包 的 VB 运行环境 )

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

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

三、将 VBToolsLib-x86 目录下的四个文件

      libcrypto-1_1.dll   

     libssl-1_1.dll 

    msvcr100.dll   

    VBTools.dll

复制到  c:\windows\system32\  和 c:\windows\SysWOW64目录下

四、cmd  进入 c:\windows\system32\ 目录下

  

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

五、注册VBTools.dll

       regsvr32 VBTools.dll 

六、注册 CtiClient.ocx 

      regsvr32 CtiClient.ocx

注:一定要进入 System32目录下执行

       C:\windows\system32\regsvr32 CtiClient.ocx

 七、在运行中  执行  regedit  进入  注册表 中

      查找  ocx的名称   如:CtiClient

      有很多个,需要多次查找 ,找到 有Clsid 的     (不需要大括号)

     注:相同ocx   及相同一版本   它的Clsid是一样的 ,因此在多台机器上注册它的Clsid都是一样的

            但升级ocx版本则需要重新 在注册表找到对应的Clsid

 

三、新建 index.html  代码如下

<OBJECT ID="CtiClient"
    CLASSID="CLSID:8AE9A42C-20ED-4A70-A11E-C9CA0A448B8D"
    CODEBASE="CtiClient.CAB#version=1,0,0,0" height="300px" width="400px">
</OBJECT>

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

 

在 IE 安全中 将 允许  ActiveX 控件 和 JavaSrcipt 权限打开  (可选项,在上面风险提示 无法启动时可改IE设置)

 在网页中就能显示 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-25 21:14  海乐学习  阅读(509)  评论(0编辑  收藏  举报