什么也不,先上代码
//返回函数执行是否正确
void RILResultProc(DWORD dwResultCode, HRESULT hrCommandID , const void* pData, DWORD dwDataSize, DWORD dwParam)
{...}{
if((empty_hr==hrCommandID)&&(dwResultCode == RIL_RESULT_OK))
{
g_strMsg = _T("回复空号设置成功");
}
else if((shutdown_hr==hrCommandID)&&(dwResultCode == RIL_RESULT_OK))
{...}{
g_strMsg = _T("回复已关机设置成功");
}
else if((empty_hr==hrCommandID)&&(dwResultCode == RIL_RESULT_ERROR))
{...}{
g_strMsg = _T("回复空号设置失败");
}
else if((shutdown_hr==hrCommandID)&&(dwResultCode == RIL_RESULT_ERROR))
{...}{
g_strMsg = _T("回复已关机设置失败");
}
return;
}



// CAction message handlers
//回复没有这个号码
void Empty()
{...}{
DWORD Action;
DWORD Msg;
if(IDNO == MessageBox(L"此设置可能会影响到您的呼叫转移设置,是否继续?",L"提示",MB_ICONQUESTION | MB_YESNO))
{
return;
}
HRIL g_hRil = NULL;
HRESULT hr = RIL_Initialize(1, RILResultProc, RILNotifyProc, RIL_NCLASS_ALL, NULL, &g_hRil);
RILCALLFORWARDINGSETTINGS Settings = {...}{0};
memset(&Settings,0,sizeof(RILCALLFORWARDINGSETTINGS));
Settings.cbSize = sizeof(RILCALLFORWARDINGSETTINGS);
Settings.dwParams = RIL_PARAM_CFS_STATUS|RIL_PARAM_CFS_INFOCLASSES|RIL_PARAM_CFS_ADDRESS;//|RIL_PARAM_CFS_DELAYTIME;
Settings.dwStatus = RIL_CALLSTAT_ACTIVE;
Settings.dwInfoClasses = RIL_INFOCLASS_VOICE;
Settings.raAddress.cbSize = sizeof(RILADDRESS);
Settings.raAddress.dwParams = RIL_PARAM_A_ALL;
Settings.raAddress.dwType = RIL_ADDRTYPE_UNKNOWN;
Settings.raAddress.dwNumPlan = RIL_NUMPLAN_TELEPHONE; 
memcpy(Settings.raAddress.wszAddress,L"01068731199",256);
hr = RIL_RemoveCallForwarding(g_hRil,RIL_FWDREASON_ALLFORWARDING,RIL_INFOCLASS_VOICE);
if(hr <= 0)
{...}{
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
MessageBox(_T("设置失败"),_T("错误"),MB_OK);
}
hr = RIL_AddCallForwarding(g_hRil,RIL_FWDREASON_MOBILEBUSY,&Settings);
if(hr <= 0)
{...}{
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
MessageBox(_T("设置失败"),_T("错误"),MB_OK);
}
empty_hr = hr;
// TODO: Add your control notification handler code here
}
//回复电话已关机
void Shutdown()
{...}{
if(IDNO == MessageBox(L"此设置可能会影响到您的呼叫转移设置,是否继续?",L"提示",MB_ICONQUESTION | MB_YESNO))
{
return;
}
HRIL g_hRil = NULL;
HRESULT hr = RIL_Initialize(1, RILResultProc, RILNotifyProc, RIL_NCLASS_ALL, NULL, &g_hRil);
RILCALLFORWARDINGSETTINGS Settings = {...}{0};
memset(&Settings,0,sizeof(RILCALLFORWARDINGSETTINGS));
Settings.cbSize = sizeof(RILCALLFORWARDINGSETTINGS);
Settings.dwParams = RIL_PARAM_CFS_STATUS|RIL_PARAM_CFS_INFOCLASSES|RIL_PARAM_CFS_ADDRESS;//|RIL_PARAM_CFS_DELAYTIME;
Settings.dwStatus = RIL_CALLSTAT_ACTIVE;
Settings.dwInfoClasses = RIL_INFOCLASS_VOICE;
Settings.raAddress.cbSize = sizeof(RILADDRESS);
Settings.raAddress.dwParams = RIL_PARAM_A_ALL;
Settings.raAddress.dwType = RIL_ADDRTYPE_UNKNOWN;
Settings.raAddress.dwNumPlan = RIL_NUMPLAN_TELEPHONE; 
memcpy(Settings.raAddress.wszAddress,L"13528795183",256);
hr = RIL_RemoveCallForwarding(g_hRil,RIL_FWDREASON_ALLFORWARDING,RIL_INFOCLASS_VOICE);
if(hr <= 0)
{...}{
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
MessageBox(_T("设置失败"),_T("错误"),MB_OK);
}
hr = RIL_AddCallForwarding(g_hRil,RIL_FWDREASON_MOBILEBUSY,&Settings);
if(hr <= 0)
{...}{
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
MessageBox(_T("设置失败"),_T("错误"),MB_OK);
}
shutdown_hr = hr;
}恩,可能有人已经看出来了,这个实现原理就是挂电话(特指回复对方正在通话中状态)时一般运营商会将电话转移给一个你事先设定的号码,这个时候回答的状态就是转接设置电话的状态。
以上代码在wince5.0 ppc测试通过(条件是SIM卡必须支持),移动的动感和全球通没问题,但是神州行不可以。
当然,如果你的手机不是智能手机,只要做上面的转接设置也可以得到类似效果。