我在C#中爲地面線路電話編寫TAPI 3.0應用程序。 我的目標是接收和記錄呼叫。 到目前爲止,在我的代碼中,第一次調用一切正常,所有事件都觸發。Tapi 3和C#第一次調用後沒有事件觸發
但不幸的是,所有後續調用完全由TAPI第一個電話後忽略
沒有任何事件觸發,直到我再次重新啓動應用程序。
一件事,我已經找到了,而如果我重置基於Tapi例如它可以解決我的問題,谷歌搜索,
誰能告訴如何重置基於Tapi對象?
這裏是我的代碼
void initializetapi3()
{
try
{
tobj = new TAPIClass();
tobj.Initialize();
IEnumAddress ea=tobj.EnumerateAddresses();
ITAddress ln;
uint arg3=0;
lines=0;
cn=new callnotification();
cn.addtolist=new callnotification.listshow(this.status);
tobj.ITTAPIEventNotification_Event_Event+= new TAPI3Lib.ITTAPIEventNotification_EventEventHandler(cn.Event);
tobj.EventFilter=(int)(TAPI_EVENT.TE_CALLNOTIFICATION|
TAPI_EVENT.TE_DIGITEVENT|
TAPI_EVENT.TE_PHONEEVENT|
TAPI_EVENT.TE_CALLSTATE|
TAPI_EVENT.TE_GENERATEEVENT|
TAPI_EVENT.TE_GATHERDIGITS|
TAPI_EVENT.TE_REQUEST|TAPI_EVENT.TE_CALLINFOCHANGE);
for(int i=0;i<10;i++)
{
ea.Next(1,out ln,ref arg3);
ia[i]=ln;
if(ln!=null)
{
comboBox1.Items.Add(ia[i].AddressName);
lines++;
}
else
break;
}
}
catch(Exception e)
{
MessageBox.Show(e.ToString());
}
}
delegate void valueDelegate(string value);
public void status(string str)
{
if (textBox1.InvokeRequired)
{
textBox1.Invoke(new valueDelegate(status), str);
}
else
{
textBox1.Text = str;
}
}
public void Event(TAPI3Lib.TAPI_EVENT te, object eobj)
{
switch (te)
{
case TAPI3Lib.TAPI_EVENT.TE_CALLNOTIFICATION:
status("call notification event has occured");
break;
case TAPI3Lib.TAPI_EVENT.TE_PHONEEVENT:
status("A phone event!");
break;
case TAPI3Lib.TAPI_EVENT.TE_CALLSTATE:
TAPI3Lib.ITCallStateEvent a = (TAPI3Lib.ITCallStateEvent)eobj;
TAPI3Lib.ITCallInfo b = a.Call;
switch (b.CallState)
{
case TAPI3Lib.CALL_STATE.CS_INPROGRESS:
status("dialing");
break;
case TAPI3Lib.CALL_STATE.CS_CONNECTED:
status("Connected");
break;
case TAPI3Lib.CALL_STATE.CS_DISCONNECTED:
status("Disconnected");
break;
case TAPI3Lib.CALL_STATE.CS_OFFERING:
status("A party wants to communicate with you!");
break;
case TAPI3Lib.CALL_STATE.CS_IDLE:
status("Call is created!");
break;
}
break;
}
}
我想避免下面的第一個解決方案,如果可以的話,下面的第二個解決方案不適合我。你自己找到了解決方案嗎? – Rob
沒關係,我找到了解決辦法,看到下面的答案 – Rob