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>