【发布时间】:2011-11-10 17:30:12
【问题描述】:
我有一个 C# Tapi 应用程序,我正在开发它以从计算机发送到路由到手机的 Toshiba CIX tapi 命令。这条线本身并不重要,因为那部分正在工作。我可以从应用程序拨打电话。但是,接听和挂断无法正常工作。当我尝试断开连接时,出现此错误:
此实现不接受建议(来自 HRESULT 的异常:0x80040003 (OLE_E_ADVISENOTSUPPORTED))
当我尝试回答时,我得到:
无法将“System.__ComObject”类型的 COM 对象转换为接口 键入“TAPI3Lib.ITBasicCallControl”。此操作失败,因为 对具有 IID 的接口的 COM 组件上的 QueryInterface 调用 “{B1EFC389-9355-11D0-835C-00AA003CCABD}”因以下原因而失败 错误:不支持此类接口(HRESULT 异常:0x80004002 (E_NOINTERFACE))。
我的应用基于: http://www.codeproject.com/KB/IP/devangpro.aspx 由于跨线程问题,为了让 codeproject 上的应用程序至少能够正确运行,我确实必须创建一个委托来将项目添加到列表框。
这里是断开连接:
IEnumCall ec = ia[line].EnumerateCalls();
uint arg = 0;
ITCallInfo ici;
try
{
ec.Next(1,out ici,ref arg);
ITBasicCallControl bc=(ITBasicCallControl)ici;
bc.Disconnect(DISCONNECT_CODE.DC_NORMAL);
ici.ReleaseUserUserInfo();
}
catch(Exception exp)
{
MessageBox.Show("No call to disconnect!","TAPI3");
}
这就是答案:
IEnumCall ec = ia[line].EnumerateCalls();
uint arg=0;
ITCallInfo ici;
try
{
ec.Next(1,out ici,ref arg);
ITBasicCallControl bc=(TAPI3Lib.ITBasicCallControl)ici;
if(!reject)
{
bc.Answer();
}
else
{
bc.Disconnect(DISCONNECT_CODE.DC_REJECTED);
ici.ReleaseUserUserInfo();
}
}
catch(Exception exp)
{
MessageBox.Show("There may not be any calls to answer! \n\n"+exp.ToString(),"TAPI3");
}
【问题讨论】:
标签: c# phone-call tapi