病毒在手机中可以查看用户的最近拨号记录,知道用户给那些人拨打了电话,电话从什么时间开始到什么时间结束等。
实现方法:
PhoneOpenCallLog()生成呼叫日志句柄。
PhoneGetCallLogEntry()获取呼叫日志中的单个条目,并移动条目指针到下一条。
此函数获取的电话通话信息非常丰富。可以深入研究。
PhoneCloseCallLog()关闭呼叫日志句柄。
示例代码如下:
#include "stdafx.h" #include <windows.h> #include <commctrl.h> #include <phone.h> #pragma comment(lib,"phone.lib") int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { HANDLE hCallLog = NULL; CALLLOGENTRY entry; int nret = MGSEI_NO_ERROR; WCHAR Number[256]; SYSTEMTIME st; //打开呼叫日志获取句柄。 if( S_OK != PhoneOpenCallLog(&hCallLog) ) { return -1; } //清空缓冲区准备获取日志信息 ZeroMemory(&entry,sizeof(CALLLOGENTRY)); entry.cbSize = sizeof(CALLLOGENTRY); entry.pszNumber = Number; //枚举获取呼叫日志 while( S_OK == PhoneGetCallLogEntry(hCallLog,&entry) ) { ShowText(entry.pszNumber); FileTimeToLocalFileTime(&entry.ftStartTime,&entry.ftStartTime); FileTimeToSystemTime(&entry.ftStartTime,&st); ShowST(st); FileTimeToLocalFileTime(&entry.ftEndTime,&entry.ftEndTime); FileTimeToSystemTime(&entry.ftEndTime,&st); ShowST(st); } //如果返回ERROR_NO_MORE_ITEMS说明已经没有条目了 if(ERROR_NO_MORE_ITEMS == GetLastError()) { ShowText(L"No More Items"); } //关闭呼叫日志句柄 if( S_OK != PhoneCloseCallLog(hCallLog) ) { return -2; } return 0; }