最近时间在做一个关于ocx控件的软电话项目,ocx需要嵌入到IE浏览器中,实现电话的呼入,呼出,挂起,监听和状态通知功能。
软电话在原来的项目已经实现,目前需要将软电话嵌入到IE中,不可避免的需要通过JS和Activex技术来实现。我的开发环境是 MVC
6.0,使用的开发语言是c++和javascript。
第一,首先要新建立一个ocx控件工程,然后将相应代码加入,基于界面方式,实现了电话的呼入和呼出。
第二,由于需要和web页面进行互动,则需要提供基于activex技术的方法和事件。activex的方法(method)是提供接口给js来调用,然后实现控件内部的功能。activex的事件(event)是通过触发来调用js的函数,实现状态显示等功能,相当于建立了一个回调函数,然后js实现回调函数的实体。举一个例子:
Test page for HDWebCallActiveX
bgcolor="#cccccc" style="color:
#000000">
!--object部分代码实现ocx控件的加载。
ID="WebSCallActiveX"
CLASSID="CLSID:93C5CB95-D7BE-4AC9-A29F-257BC250B8F3"
width="300" height="192"
codebase="WebSCallActiveX.ocx#version=1,0,0,1">
!--下面代码实现的是一个按钮,点击以后会调用js函数Btncall_onclick()
实现电话的呼出。
align="right" style="width:
305px">
id=BtnCall style="BACKGROUND-IMAGE: url(Btn.gif); WIDTH: 95px;
BORDER-TOP-STYLE: none; FONT-FAMILY: Verdana; BORDER-RIGHT-STYLE:
none; BORDER-LEFT-STYLE: none; HEIGHT: 40px; BACKGROUND-COLOR:
transparent; BORDER-BOTTOM-STYLE: none" οnclick="return
Btncall_onclick()" type=button align=right value=呼叫
name=BtnCall>
!--下面代码实现了一个编辑框,用于被叫号码的输入。
style="BORDER-RIGHT: #669966 1px solid; BORDER-TOP: #669966 1px
solid; BORDER-LEFT: #669966 1px solid; WIDTH: 110px; BORDER-BOTTOM:
#669966 1px solid; FONT-FAMILY: Verdana; HEIGHT: 20px"
id="EditCalled">
!--下面代码是JS脚本函数部分。
function Btncall_onclick()
{
//调用WebSCallActiveX的HDCALL方法,传入参数EditCalled.value为字符型被叫号码 document.getElementByIdx_x_x_x_x('WebSCallActiveX').HDCALL(EditCalled.value);
}
!--下面代码实现了ocx控件的触发事件ShowStauts,参数为Status的字符串。
EVENT="ShowStauts(Status)">
ShowStautsJ(Status);
//触发事件的处理函数
function ShowStautsJ(Status)
{
//将状态写入到日志中。
if(status==1)
AddToStatusLogList("空闲"
);
if(status==2)
AddToStatusLogList("通话"
);
}