Sub PressConnect
On Error Resume Next
DIM iAddressType
DIM pConnectTo
DIM addressFrom
DIM selStr
If not IsEmpty(spITCall) Then
MsgBox "您正在通话中,请先挂断",0,"连接"
Exit Sub
End If
If txtAddress.value = "" Then
MsgBox "呼叫地址不能为空",0,"连接"
Exit Sub
End If
if sCurrentAddressType < 0 Then
MsgBox "您没有正确选择地址类型",0,"连接"
Exit Sub
End If
iAddressType = CInt(sCurrentAddressType)
pConnectTo = txtAddress.value
For i = 0 to selAddress.length - 1
If selAddress.options(i).selected = True Then
addressFrom = selAddress.options(i).value
Exit For
End If
Next
If addressFrom = "" Then
MsgBox "你的号码不存在",0,"连接"
Exit Sub
End If
Call Connect(pConnectTo,iAddressType,addressFrom,checkAOnly.value="on" or checkAOnly.disabled,checkNoOutgoingVideo.value="on" or checkNoOutgoingVideo.disabled)
End Sub
'******************************************************************
'******************************************************************
'******************************************************************
' 连接
Sub Connect(pConnectTo,iAddressType,addressFrom,blnAOnly,blnNoOutVideo)
On Error resume Next
sUnableToComplete = False
ConnANN.innerHTML = "正在连接 " & pConnectTo & "..."
window.status = "正在创建"
DIM pITAddress_Connect
DIM blnFoundAddress
blnFoundAddress = False
DIM pITAddress
For Each pITAddress in TAPIOBJ.Addresses
if pITAddress.AddressName = addressFrom Then
DIM pITMediaSupport
Set pITMediaSupport = MAPPER.QueryDispatchInterface(_
IID_String_ITMediaSupport,pITAddress)
call CheckError("connect:Query ITAddress for ITMediaSupport" )
call CheckError("connect:ITMediaSupport.QueryMediaType" )
blnFoundAddress = True
Set pITAddress_Connect = pITAddress
Exit For
End If
Next
Set pITAddress = Nothing
if not blnFoundAddress Then
MsgBox "对不起,您的号码 " & addressFrom & "不存在",0,"连接"
ConnANN.innerHTML = "呼叫 "& pConnectTo & " 失败"
Exit Sub
End If
Call CreateCallWindow(pITAddress_Connect,blnAOnly or not bSupportVideo,blnNoOutVideo or not bSupportVideo)
Call CheckError("Connect: after CreateCallWindow")
DIM pITTerminalSupport
Set pITTerminalSupport = MAPPER.QueryDispatchInterface(_
IID_String_ITTerminalSupport,pITAddress_Connect)
call CheckError("connect:Query ITAddress for ITTerminalSuport" )
DIM MediaTypes
If not bSupportVideo or blnAOnly Then
MediaTypes = TAPIMEDIAMODE_AUDIO
Else
MediaTypes = S_MEDIA_AUDIOVIDEO
End If
Set pCall = pITAddress_Connect.CreateCall(pConnectTo,iAddressType,MediaTypes)
if sUnableToComplete Then
Call DisconnectCall(1)
window.status = ""
ConnANN.innerHTML = "呼叫 "& pConnectTo & " 失败"
window.status = "完成"
Exit Sub
End If
window.status = "连接中"
Call pCall.Connect(false)
if Err.Number = &H8004000C Then
Err.Clear
Call DisconnectCall(1)
ConnANN.innerHTML = "呼叫 "& pConnectTo & " 失败:地址使用中"
window.status="完成"
Set pCall = Nothing
Else
if not Err.Number = 0 Then
Err.Clear
Call DisconnectCall(1)
ConnANN.innerHTML = "呼叫 "& pConnectTo & " 失败 " & Hex(Err.number)
window.status="完成"
Set pCall = Nothing
Else
Set spITCall = pCall
End if
End If
call CheckError("connect:main connect" )
Set pCall = Nothing
End Sub
Sub AssignTerminals(pCall, is_no_video, is_no_render,bSetQOS)
On Error Resume Next
DIM pITCallInfo
Set pITCallInfo = MAPPER.QueryDispatchInterface( _
IID_String_ITCallInfo, pCall)
Call CheckError("AssignTerminals:query for pITCallInfo")
DIM pITAddress
Set pITAddress = pITCallInfo.Address
Set pITTerminalSupport = MAPPER.QueryDispatchInterface(_
IID_String_ITTerminalSupport,pITAddress)
Call CheckError("AssignTerminals:query for pITTerminalSupport")
DIM pITStreamControl
Set pITStreamControl = MAPPER.QueryDispatchInterface(_
IID_String_ITStreamControl,pCall)
call CheckError("AssignTerminals:Query ITCall for ITStreamControl" )
DIM pITStream
DIM lMediaType
DIM lDirection
For Each pITStream in pITStreamControl.Streams
lMediaType = pITStream.MediaType
lDirection = pITStream.Direction
if not ((is_no_video and lMediaType = TAPIMEDIAMODE_VIDEO) or _
(is_no_render and lMediaType = TAPIMEDIAMODE_VIDEO and lDirection=TD_CAPTURE) ) Then
if (lMediaType = TAPIMEDIAMODE_VIDEO) and (lDirection=TD_RENDER) Then
is_error = false
Else
Set pITTerminal = pITTerminalSupport.GetDefaultStaticTerminal(lMediaType,lDirection)
if not (Err.number = 0) Then
is_error = True
Err.Clear
Else
is_error = False
pITStream.SelectTerminal(pITTerminal)
End if
call CheckError("AssignTerminals:SelectTerminal" )
End If
if is_error Then 'Maybe unnecessary
if (lMediaType = TAPIMEDIAMODE_VIDEO and lDirection=TD_CAPTURE) Then
MsgBox "Unable to find video capture device: attach video receive only"
Else
if (lMediaType = TAPIMEDIAMODE_AUDIO and lDirection=TD_CAPTURE) Then
MsgBox "Unable to find audio recording device: attach audio receive only"
Else
MsgBox "Unable to find audio playback device."
Err.Clear
sUnableToComplete = True
Exit Sub
End If
End if
Dim pIVideoWindow2
Set pIVideoWindow2 = MAPPER.QueryDispatchInterface(IID_String_IVideoWindow, pVideoWindow2)
call CheckError("AssignTerminals: query for IVideoWindow")
pIVideoWindow2.AutoShow = True
call CheckError("AssignTerminals: set visibility")
Dim pIVideoWindow1
Set pIVideoWindow1 = MAPPER.QueryDispatchInterface(IID_String_IVideoWindow, pVideoWindow1)
call CheckError("AssignTerminals: query for IVideoWindow")
pIVideoWindow1.AutoShow = True
call CheckError("AssignTerminals: set visibility")
'错误处理
Sub CheckError(strMsg)
if not Err.number = 0 Then
MsgBox strMsg & ":" & Err.number & ";"&Err.description
sbNeedToExit = True
Err.Clear
End If
End Sub
'********************************************************************
'********************************************************************
'********************************************************************
'********************************************************************
' 枚举拨入电话,并现实在list中
Sub window_onload
On Error Resume Next
'如果Tapi控件没有初试化就退出
If sUnableToComplete = True Then
Exit Sub
End If
'监听所有地址
DIM intTmp
intTmp = Find_Address_And_Register()
If sbNeedToExit Then
Exit Sub
End If
If intTmp = 0 Then
MsgBox "不能找到任何可用ip地址",0,"初试化中"
Exit Sub
End If
if not Err.number = 0 Then 'Probably this address does not support incoming calls
iQtaRegistered = iQtaRegistered - 1
Err.Clear
Else
Find_Address_And_Register = Find_Address_And_Register + 1
End If
DIM oOption
Set oOption = document.createElement("OPTION")
oOption.text = pITAddress.AddressName
oOption.value = pITAddress.AddressName
selAddress.add(oOption)
bSupportVideo = false
For i = 0 to selAddress.length - 1
If selAddress.options(i).selected = True Then
selstr = selAddress.options(i).value
Exit For
End If
Next
For Each pITAddress in TAPIOBJ.Addresses
if pITAddress.AddressName =SelStr Then
DIM pITMediaSupport
Set pITMediaSupport = MAPPER.QueryDispatchInterface(_
IID_String_ITMediaSupport,pITAddress)
call CheckError("changeOptionsState:Query ITAddress for ITMediaSupport" )
call CheckError("changeOptionsState:ITMediaSupport.QueryMediaType" )
Set pITMediaSupport = Nothing
Exit For
End If
Next
call CheckError("changeOptionsState:After enumerating the Addresses")
checkAOnly.disabled = not bSupportVideo
checkNoOutgoingVideo.disabled = not bSupportVideo