TAPI获得来电消息和来电号码?
我在写一个可以获得来电消息并能够获得来电号码的程序,通过查找
现在实现了获得来电消息并响应的功能.但如何获得来电号码呀,
网上的代码我试了不行,获得的szPhoneNumber不是来电号码呀.
而且我是通过循环来初始化来电线路的,是不是有更好办法?
全部代码如下:
#include <windows.h>
#include <tapi.h>
DWORD lineHandleCount;
HLINE *lineHandles;
HLINEAPP lineApp;
VOID CALLBACK LineCallback(DWORD hDevice, DWORD dwMsg, DWORD dwCallbackInstance, DWORD dwParam1, DWORD dwParam2, DWORD dwParam3)
{
switch(dwMsg)
{
case LINE_APPNEWCALL: // message of new incall
LINECALLINFO *lpCallInfo; lpCallInfo = (LINECALLINFO *)malloc(sizeof(LINECALLINFO)+1000); memset(lpCallInfo, 0, sizeof(LINECALLINFO)+1000); lpCallInfo->dwTotalSize = sizeof(LINECALLINFO)+1000;
while (1)
{ lineGetCallInfo( (HCALL)hDevice, lpCallInfo);
if (lpCallInfo->dwTotalSize < lpCallInfo->dwNeededSize)
lpCallInfo = (LINECALLINFO *)realloc(lpCallInfo,lpCallInfo->dwNeededSize);
else break;
}
TCHAR szPhoneNumber[30];
lstrcpy(szPhoneNumber,(LPTSTR)((LPSTR)((DWORD)lpCallInfo+(DWORD)lpCallInfo->dwCallerIDOffset)));
free(lpCallInfo);
MessageBox(NULL,szPhoneNumber,szPhoneNumber,MB_OK);
// szPhoneNumber ---- 这就是呼入的电话号码 } } } break;}}
for ( DWORD i=0; i<lineHandleCount; i++ )
lineClose( lineHandles[i]);
delete[] lineHandles;
lineShutdown( lineApp );
break;
case LINE_CALLSTATE: // message of call state changed
switch(dwParam1)
{
case LINECALLSTATE_DISCONNECTED: // 来电挂断
break;
// case ...
// ...
default:
break;
}
// case ......
// ...
default:
break;
}
}
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
//MessageBox(NULL,L"dd",L"DD",MB_OK);
//通过循环来初始化来电线路
while(lineInitialize(&lineApp,hInstance,(LINECALLBACK)LineCallback,L"Video",&lineHandleCount)==0) {
Sleep(100);
lineHandles = new HLINE[lineHandleCount];
for(DWORD i = 0; i < lineHandleCount; i++)
{
int rc;
DWORD ver;
LINEEXTENSIONID extensionID;
if( lineNegotiateAPIVersion( lineApp, i, 0x00010000, 0x00020000, &ver, &extensionID ) == 0 )
{
rc = lineOpen( lineApp,i,&lineHandles[ i ],ver,0,(DWORD)0,LINECALLPRIVILEGE_MONITOR|LINECALLPRIVILEGE_OWNER,LINEMEDIAMODE_INTERACTIVEVOICE,NULL);
}
}
}
}