Windows_Mobile_来电防火墙实现

来源:互联网 发布:php禁止查看源码 编辑:程序博客网 时间:2024/04/28 00:10
1。初始化线路并对线路进行监控

代码:
--------------------------------------------------------------------------------

DWORD LineHandleCount=0;HLINE *LineHandles=NULL;HLINEAPP LineApp;VOID CALLBACK LineCallback(DWORD hDevice, DWORD dwMsg, DWORD dwCallbackInstance, DWORD dwParam1, DWORD dwParam2, DWORD dwParam3){}if ( lineInitialize( &LineApp, g_hInst, (LINECALLBACK)LineCallback, g_szAppWndClass, &LineHandleCount ) == 0 ) {       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);         }       } }

--------------------------------------------------------------------------------



2。取得来电号码


代码:
--------------------------------------------------------------------------------

VOID CALLBACK LineCallback(DWORD hDevice, DWORD dwMsg, DWORD dwCallbackInstance, DWORD dwParam1, DWORD dwParam2, DWORD dwParam3){switch(dwMsg)     {     case LINE_CALLINFO:       {         switch(dwParam1)             {             case LINECALLINFOSTATE_CALLERID:               {                 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);                 // szPhoneNumber ---- 这就是呼入的电话号码                 }             }       }   break;}}

--------------------------------------------------------------------------------



3。if这个号码你不想接那就
lineDrop((HCALL)hDevice,NULL,0); //挂断电话
或者重新构建回应信息让对方听到关机、不在服务区或者Y正在通话的消息发送给TAPI。

代码:
--------------------------------------------------------------------------------

This 部分的程序 I 还没有 complete

--------------------------------------------------------------------------------



4。如果你觉得老是看着谁来电累了的话,那就

代码:
--------------------------------------------------------------------------------

void ReleaseLine(){     for ( DWORD i=0; i<LineHandleCount; i++ )       lineClose( LineHandles[ i ] );       delete[] LineHandles;       lineShutdown( LineApp ); }

-------------------------------------------------------------------------------- 
原创粉丝点击