存档

文章标签 ‘phone filter’

 Powered by Max Banner Ads 

windows mobile 电话过滤

2010年5月20日 2 条评论

最近看了下windows mobile上电话过滤的开发,网上的代码都是c#的,没有找到c++的,就把代码移植到了c++上,废话不多说,直接上代码。

#include <regext.h>
#include "snapi.h"
#include "Tlhelp32.h"
const TCHAR c_szPhoneRegistryRootkey[]      = TEXT("System\\State");
const TCHAR c_szPhoneRegistrySubkey[]       = TEXT("Phone");
const TCHAR c_szPhoneIncomingCallerNumber[] = TEXT("Incoming Caller Number");

HREGNOTIFY g_hRegNotify ;
// The call-back function for Registry Notifications.

void RegistryNotifyCallbackFunc(HREGNOTIFY hNotify, DWORD dwUserData, const PBYTE pData, const UINT cbData)
{

 if(pData != NULL && 0 == _tcscmp((TCHAR*)pData, TEXT("12345678965")))//后边这个是要拒绝的电话
 {
 keybd_event(0x73, 0, 0, 0);
 keybd_event(0x73, 0, 0x0002, 0);
 }
 return;
}
void RegisterForPhoneNotifications()
{
 HKEY hKey;

 if (S_OK == RegOpenKeyEx(HKEY_LOCAL_MACHINE, c_szPhoneRegistryRootkey, 0,  KEY_QUERY_VALUE, &hKey))
 {
 //下边是注册注册表修改回调函数
 HRESULT hr = RegistryNotifyCallback(hKey,
 c_szPhoneRegistrySubkey,
 c_szPhoneIncomingCallerNumber,
 RegistryNotifyCallbackFunc,
 1,
 NULL,
 &g_hRegNotify );

 RegCloseKey(hKey);

 }
}

void wmain()
{
 RegisterForPhoneNotifications();
 Sleep(1000000);
}

原理是这样的:监控注册表的某项值,上边有来电的号码,然后如果不想接听的话那么就模拟发送键盘码。
但是这样的问题是还会在手机上的未接来电表中留下记录,把那个记录删除就行了。删除的方法就是删除pim.vol中的clog.db。

Get Adobe Flash playerPlugin by wpburn.com wordpress themes