Windows mobile SMS发送操作代码

在windows mobile中发送SMS主要需要调用以下两个API:

HRESULT SmsOpen (
const LPCTSTR
ptsMessageProtocol,
const DWORD dwMessageModes,
SMS_HANDLE* const psmshHandle,
HANDLE* const phMessageAvailableEvent);

 

HRESULT SmsSendMessage (
const SMS_HANDLE
smshHandle,
const SMS_ADDRESS * const psmsaSMSCAddress,
const SMS_ADDRESS * const psmsaDestinationAddress,
const SYSTEMTIME * const pstValidityPeriod,
const BYTE * const pbData,
const DWORD dwDataSize,
const BYTE * const pbProviderSpecificData,
const DWORD dwProviderSpecificDataSize,
const SMS_DATA_ENCODING smsdeDataEncoding,
const DWORD dwOptions,
SMS_MESSAGE_ID * psmsmidMessageID);

 

 

在一本书的光盘代码里面有发送短信的函数,在很大程度上简化了操作--只要能用这个函数就行了。通过这个函数也能能搞明白发送SMS的代码是怎么回事儿了。

 

各个参数意义如下bSendConfirmation 是否接受确认消息

bUserDefaultSMSC 是否使用默认短消息信息中心号码

lpszSMSC 短信中心的号码

lpszRecipient 信息接受方号码

lpszMessage 所发送的文本信息

 

void SendSMS(BOOL bSendConfirmation, BOOL bUseDefaultSMSC, LPCTSTR lpszSMSC, LPCTSTR lpszRecipient, LPCTSTR lpszMessage)

{

     SMS_HANDLE smshHandle;

     SMS_ADDRESS smsaSource;

     SMS_ADDRESS smsaDestination;

     TEXT_PROVIDER_SPECIFIC_DATA tpsd;

     SMS_MESSAGE_ID smsmidMessageID=0;

     HRESULT hr=0;

 

     // 打开SMS

     if(FAILED(SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, &smshHandle, NULL)))

     {

         MessageBox(NULL,

                       (LPCTSTR)LoadString(ghInstance, IDS_ERROR_SMSOPEN, 0, 0),

                       (LPCTSTR)LoadString(ghInstance, IDS_CAPTION_ERROR, 0, 0),

                       MB_OK | MB_ICONERROR);

         return;

     }

// 建立短信中心地址(号码)

     if(!bUseDefaultSMSC)

     {

         smsaSource.smsatAddressType = SMSAT_INTERNATIONAL;

         _tcsncpy(smsaSource.ptsAddress, lpszSMSC, SMS_MAX_ADDRESS_LENGTH);

     }

 

     // 创建目标地址(号码)

     memset (&smsaDestination, 0, sizeof (smsaDestination));

     smsaDestination.smsatAddressType = SMSAT_INTERNATIONAL;

     _tcsncpy(smsaDestination.ptsAddress, TEXT("+8613611995238"), SMS_MAX_ADDRESS_LENGTH);

 

     // 设置提供者服务

     memset (&tpsd, 0, sizeof (tpsd));

     tpsd.dwMessageOptions = bSendConfirmation ? PS_MESSAGE_OPTION_STATUSREPORT : PS_MESSAGE_OPTION_NONE;

     tpsd.psMessageClass = PS_MESSAGE_CLASS1;

     tpsd.psReplaceOption = PSRO_NONE;
// 发送

     if(SUCCEEDED(hr=SmsSendMessage(smshHandle, ((bUseDefaultSMSC) ? NULL : &smsaSource),

                                      &smsaDestination, NULL, (PBYTE) lpszMessage,

                                      _tcslen(lpszMessage) * sizeof(TCHAR), (PBYTE) &tpsd,

                                      sizeof(TEXT_PROVIDER_SPECIFIC_DATA), SMSDE_OPTIMAL,

                                      SMS_OPTION_DELIVERY_NONE, &smsmidMessageID)))

     {

         MessageBox(NULL,

                       (LPCTSTR)LoadString(ghInstance, IDS_SMSSENT, 0, 0),

                       (LPCTSTR)LoadString(ghInstance, IDS_CAPTION_SUCCESS, 0, 0),

                       MB_OK);

     }

     else

     {

        

 

         MessageBox(NULL,

                       (LPCTSTR)LoadString(ghInstance, IDS_ERROR_SMSSEND, 0, 0),

                       (LPCTSTR)LoadString(ghInstance, IDS_CAPTION_ERROR, 0, 0),

                       MB_OK | MB_ICONERROR);

     }

 

     //关闭

     VERIFY(SUCCEEDED(SmsClose(smshHandle)));

}


记住,在发送手机号的时候,要在手机号的前面加上86

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值