2010-06-27 134 views
13

是否可以直接从调制解调器或电话线读取字节而不会丢失任何信息? 如果使用SerialPort振铃后没有发生ReceiveData事件。如何检测来自电话线的来电号码?

我想直接从行读取来电显示信息。我的调制解调器不支持来电显示。

回答

16

检测来电显示的正确方法是使用TAPI API。

您可以在这里找到一个C#TAPI库(称为ITAPI3)。 http://www.julmar.com/tapi/

查看2006年4月4日的博客文章,了解有关在64位Windows上构建与其链接的程序的一些注意事项。

而这里的示例代码:

TTAPI tapi = new TTAPI(); 

tapi.TE_CALLINFOCHANGE += (sender, e) => 
{ 
    if (e.Cause == CALLINFOCHANGE_CAUSE.CIC_CALLERID) 
    { 
     Console.WriteLine(e.Call.get_CallInfo(CALLINFO_STRING.CIS_CALLERIDNUMBER)); 
     Console.WriteLine(e.Call.get_CallInfo(CALLINFO_STRING.CIS_CALLERIDNAME)); 
    } 
} 

tapi.Initialize(); 

// ... 
// Keep the TAPI object in memory so it can listen for events 
// ... 

tapi.ShutDown();