/**************************************************************
* 获取系统联系人列表并选择联系人
***************************************************************/
HRESULT SelectContact(HWND hWnd)
{
HRESULT hr;
CHOOSECONTACT chooserData = {0};
CEPROPID propid;
propid = PIMPR_ALL_PHONE; //所有的电话号码
chooserData.cbSize = sizeof(chooserData);
chooserData.dwFlags = CCF_RETURNPROPERTYVALUE;
chooserData.rgpropidRequiredProperties = &propid;
chooserData.cRequiredProperties = 1;
chooserData.hwndOwner = hWnd;
// 弹出所选择的联系人
hr = ChooseContact(&chooserData);
CHR(hr);
//获取选择的号码
wcscpy(ContactPhone, chooserData.bstrPropertyValueSelected);
// 关闭联系人窗口
InvalidateRect(hWnd, NULL, TRUE);
Sleep(100);
if(hTmpWnd)
{
//关闭曾经打开的拨打窗口
EndDialog(hTmpWnd, 1);
Sleep(100);
}
//打开拨打窗口
DialogBox(g_hInst, (LPCTSTR)IDD_DIALOG2, hWnd, CallProc);
Error:
SysFreeString(chooserData.bstrPropertyValueSelected);
return hr;
}
/**************************************************************
* 发送短信(验证码)
***************************************************************/
BOOL SendSmsMsg(LPCTSTR Message, LPCTSTR Recipient)
{
SMS_HANDLE hHandle; //短信句柄
SMS_ADDRESS Destination;//接收号码
TEXT_PROVIDER_SPECIFIC_DATA Tpsd;
SMS_MESSAGE_ID MessageID;
// 打开发送句柄
// 协议字符串, SMS_MODE_SEND:发送模式 psmshHandle:返回的句柄 phMessageAvailableEvent:通知的事件
if(FAILED(SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, &hHandle, NULL)))
return FALSE;
// Create the destination address
//SMSAT_NATIONAL:国内电话 SMSAT_INTERNATIONAL:国际电话
Destination.smsatAddressType = SMSAT_UNKNOWN;
_tcsncpy(Destination.ptsAddress, Recipient, SMS_MAX_ADDRESS_LENGTH);
// Set up provider specific data
memset(&Tpsd, 0, sizeof(Tpsd));
Tpsd.dwMessageOptions = PS_MESSAGE_OPTION_NONE;
Tpsd.psMessageClass = PS_MESSAGE_CLASSUNSPECIFIED;
Tpsd.psReplaceOption = PSRO_NONE;
ZeroMemory(Tpsd.pbHeaderData, sizeof(Tpsd.pbHeaderData));
Tpsd.dwHeaderDataSize = 0;
Tpsd.fMessageContainsEMSHeaders = FALSE;
Tpsd.dwProtocolID = SMS_MSGPROTOCOL_UNKNOWN;
// Send the message, indicating success or failure
if(SUCCEEDED(SmsSendMessage(hHandle, NULL, &Destination, NULL, (PBYTE) Message, _tcslen(Message) * sizeof(TCHAR),
(PBYTE) &Tpsd, sizeof(TEXT_PROVIDER_SPECIFIC_DATA), SMSDE_OPTIMAL, SMS_OPTION_DELIVERY_NONE, &MessageID)))
{
// clean up
VERIFY(SUCCEEDED(SmsClose(hHandle)));
return TRUE;
}
else
{
// clean up
VERIFY(SUCCEEDED(SmsClose(hHandle)));
return FALSE;
}
}
//---------------------END------------------------------------//
/**************************************************************
* 拨打电话
***************************************************************/
LONG MakeCall(LPCTSTR PhoneNum)
{
PHONEMAKECALLINFO info;
info.cbSize = sizeof(PHONEMAKECALLINFO);
info.dwFlags = PMCF_PROMPTBEFORECALLING;
info.pszDestAddress = PhoneNum;
info.pszAppName = NULL;
info.pszCalledParty = NULL;
info.pszComment = NULL;
return PhoneMakeCall(&info);
}
//---------------------END------------------------------------//