发短信源码
来源:互联网 发布:sim卡数据恢复软件 编辑:程序博客网 时间:2024/04/28 13:14
分享一段发短信的源码,用于WinCE/WM,M8上测试通过。 /************************************* 调用范例:* SendSMS(_T("+8613xxxxxxxxx"),_T("骚扰~"));** Author:LOJA* Version: 1.0.1.0* Date: 2009/07/30** Smartphone Platforms: Smartphone 2002 and later* OS Versions: Windows CE 3.0 and later**************************************/#include #pragma comment(lib,"sms.lib")bool SendSMS(IN LPCTSTR lpNumber,IN LPCTSTR lpszMessage){ HRESULT hRes; SMS_HANDLE smsHandle=NULL; SMS_ADDRESS smsaDestination; SMS_MESSAGE_ID smsmidMessageID=0; TEXT_PROVIDER_SPECIFIC_DATA tpsd; hRes=SmsOpen(SMS_MSGTYPE_TEXT,SMS_MODE_SEND,&smsHandle,NULL); if (FAILED(hRes)) { return false; } //地址方式注意国内号码前加"+86" smsaDestination.smsatAddressType = SMSAT_INTERNATIONAL; _tcsncpy(smsaDestination.ptsAddress, lpNumber,SMS_MAX_ADDRESS_LENGTH); tpsd.dwMessageOptions = PS_MESSAGE_OPTION_NONE; //tpsd.dwMessageOptions = PS_MESSAGE_OPTION_STATUSREPORT;//表示需要状态报告 tpsd.psMessageClass = PS_MESSAGE_CLASS1; //PS_MESSAGE_CLASS0表示短信在被接收后立即显示且不存储在收件箱(称为闪信) //PS_MESSAGE_CLASS1表示一般的情况,被接收后存储到收件箱并发送一个确认回短信中心,发送方收到一个已被接收的状态报告。 ZeroMemory(tpsd.pbHeaderData, sizeof(tpsd.pbHeaderData)); tpsd.dwHeaderDataSize = 0; tpsd.fMessageContainsEMSHeaders = FALSE; tpsd.dwProtocolID = SMS_MSGPROTOCOL_UNKNOWN; tpsd.psReplaceOption = PSRO_NONE; hRes= SmsSendMessage(smsHandle, NULL, &smsaDestination, NULL, (PBYTE)lpszMessage, _tcslen(lpszMessage) * sizeof(TCHAR), (PBYTE)&tpsd, sizeof(TEXT_PROVIDER_SPECIFIC_DATA), SMSDE_OPTIMAL, SMS_OPTION_DELIVERY_NONE, &smsmidMessageID); SmsClose(smsHandle); if (SUCCEEDED(hRes)) { return true; } else { return false; }} 090730更新修正了没清空头信息导致部分情况下无法发送的bug。这个问题比较奇怪,当初在“管它”测试的时候任何地方都会发送成功,但是在别的工程不成功。另外感谢网友Benjamin的贴子(http://www.cppblog.com/zhangyq/archive/2008/04/10/46744.html),我把他的代码转载到这里: #include #pragma comment(lib,"sms.lib")void SendSMS1(LPCTSTR lpszMessage, LPCTSTR lpszRecipient,LPCTSTR lpszSMSC,BOOL bSendConfirmation, BOOL bUseDefaultSMSC){SMS_HANDLE smshHandle; //短信句柄SMS_ADDRESS smsaDestination;//接收号码TEXT_PROVIDER_SPECIFIC_DATA tpsd;SMS_MESSAGE_ID smsmidMessageID;// 打开发送句柄// 协议字符串, SMS_MODE_SEND:发送模式 psmshHandle:返回的句柄 phMessageAvailableEvent:通知的事件if(FAILED(SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, &smshHandle, NULL))){ return;}// Create the destination address//SMSAT_NATIONAL:国内电话 SMSAT_INTERNATIONAL:国际电话smsaDestination.smsatAddressType = SMSAT_UNKNOWN;_tcsncpy(smsaDestination.ptsAddress, lpszRecipient, SMS_MAX_ADDRESS_LENGTH);// Set up provider specific datamemset(&tpsd, 0, sizeof(tpsd));//tpsd.dwMessageOptions = PS_MESSAGE_OPTION_NONE;tpsd.dwMessageOptions = PS_MESSAGE_OPTION_STATUSREPORT;//表示需要状态报告tpsd.psMessageClass = PS_MESSAGE_CLASSUNSPECIFIED;//PS_MESSAGE_CLASS0表示短信在被接收后立即显示且不存储在收件箱(称为闪信)//PS_MESSAGE_CLASS1表示一般的情况,被接收后存储到收件箱并发送一个确认回短信中心,发送方收到一个已被接收的状态报告。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/**smshHandle: SmsOpen打开的句柄
- 发短信源码
- Android 源码分析-打电话和发短信
- Android 源码分析-打电话和发短信
- Android 源码分析-打电话和发短信
- android 打电话、发短信源码分析
- Android 源码分析-打电话和发短信
- Android 源码分析-打电话和发短信
- 注册网关发短信VB源码(含2000条短信)
- 《Android发短信底层源码(android5.1)解析》---主要解析SMSDispatcher发短信部分源码
- 发短信
- 发短信
- 发短信
- 发短信
- 发短信
- 发短信
- 发短信
- 发短信
- 发短信
- 右下角弹出窗口视频播放广告JS代码
- 新的机遇
- 如何做一个出色的程序员
- xplanner-0.7b7b 部署问题解决
- Giving something up for your spouse
- 发短信源码
- Cortex系列ARM内核介绍
- 揭秘window mobile power management关于device power state的管理
- [转]Qt编程中的常见问题
- 解决Firefox中有时使用window.close()脚本无法关闭当前窗口的方法
- C++学习指南-这篇文章真是太经典了
- MyEclipse7.0破解下载和破解源代码(转)
- .htaccess规则详细介绍
- C#面向对象设计模式纵横谈——笔记(1)