Windows mobile SMS发送操作代码(转)

 

WindowsmobileSMS发送操作代码 (2006-05-09 23:10:39)
在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, lpszRecipient, 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)));
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为毛呀

非常感谢你对我的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值