使用 SMS 编程的应用程序介绍
2008-04-07 20:05
295 查看
Microsoft Corporation
适用于:
Pocket PC 2002 Phone Edition
Microsoft® eMbedded Visual 工具
摘要:学习如何通过 eMbedded Visual Basic 应用程序发送 SMS 消息。当生成应用程序时,利用 Pocket PC 2002 Phone Edition 对 SMS(短消息服务)的可靠支持。
Introapp.exe
本页内容
SMS 和 Pocket PC Phone Edition
支持 SMS 的应用程序
发送 SMS 示例
代码演练
小结
SMS 的一个关键特性为:消息是通过移动网络操作员的网络即时发送的,无需手动连接到 Internet 服务提供商 — SMS 消息是即时发送的,而电子邮件需要由接收者从电子邮件服务器上检索。此外,如果接收者不在线上(如果电话已关闭),SMS 消息便会存储在操作员那里,当电话再次打开时进行转发。
在 Pocket PC 2002 Phone Edition 设备上,您可以采取与管理电子邮件几乎相同的方式来管理 SMS 消息。SMS 消息处理组件与标准的收件箱应用程序集成,允许您采取与接发电子邮件相同的方式来接发消息。您甚至可以将电子邮件作为 SMS 消息进行转发和回复,反之亦然。
返回页首
SMS 的另一个有趣的用途就是实现移动商务 (m-commerce),SMS 通常用于处理支付事务。为了使您快速入门,我们将向您展示如何从 Pocket PC 2002 Phone Edition 设备发送 SMS 消息,如以下示例所示。
返回页首
图 1. SMS 示例应用程序
在此窗体中,您可以输入国际移动电话号码和文本消息。当您点击“Send”按钮后,消息就发送出去了,就是这么简单!
返回页首
一个用于打开 SMS 消息处理组件
一个用于发送 SMS 消息
一个用于关闭 SMS 消息处理组件
还需要为不同 API 声明一些 API 常量:
首先,打开 SMS 消息处理组件 (SmsOpen),并保存其句柄 (SMSHandle)。需要该句柄来调用其他 SMS API。
需要准备很多结构或 UDT(用户定义类型),以便调用 SmsSendMessage。因为 eMbedded Visual Basic 不支持 UDT,所以使用简单的字符串来模拟某个结构。
首先是包含 SMS 消息地址的结构。该地址结构包含的指示器,用来表示所提供的号码类型(在本例中为国际号码)和号码本身。
其次是包含关于服务提供商的各种选项的结构。该结构的第一部分指示没有选择特殊的选项,而第二部分指示应该立即发送消息。
最后一部分表明不应该进行任何替换。
在发送消息 (SmsSendMessage) 的调用中,提供了已准备的结构、消息文本和很多选项。最后,关闭句柄 (SmsClose)。
要获得完整的示例,请参阅本文的示例代码。您还可以在 Antonio Paneiro 的文章 UDTs (User Defined Types) with VBCE 中获得有关该技术的更多内容。
返回页首
适用于:
Pocket PC 2002 Phone Edition
Microsoft® eMbedded Visual 工具
摘要:学习如何通过 eMbedded Visual Basic 应用程序发送 SMS 消息。当生成应用程序时,利用 Pocket PC 2002 Phone Edition 对 SMS(短消息服务)的可靠支持。
Introapp.exe
本页内容
SMS 和 Pocket PC Phone Edition
支持 SMS 的应用程序
发送 SMS 示例
代码演练
小结
SMS 和 Pocket PC Phone Edition
短消息服务是一种标准,用于在全球移动通讯系统 (GSM) 网络中的移动电话之间发送字母数字短消息(最长为 160 个字符)。它与寻呼的工作方式非常相似,但使用的是文本,目前大多数电话都支持 SMS。SMS 的一个关键特性为:消息是通过移动网络操作员的网络即时发送的,无需手动连接到 Internet 服务提供商 — SMS 消息是即时发送的,而电子邮件需要由接收者从电子邮件服务器上检索。此外,如果接收者不在线上(如果电话已关闭),SMS 消息便会存储在操作员那里,当电话再次打开时进行转发。
在 Pocket PC 2002 Phone Edition 设备上,您可以采取与管理电子邮件几乎相同的方式来管理 SMS 消息。SMS 消息处理组件与标准的收件箱应用程序集成,允许您采取与接发电子邮件相同的方式来接发消息。您甚至可以将电子邮件作为 SMS 消息进行转发和回复,反之亦然。
返回页首
支持 SMS 的应用程序
很多商业方案会涉及某种类别的通知,而 SMS 是实现各种商业事件通知的极佳方法。它可能是销售人员通知服务工程师某个客户需要服务,服务工程师通知主管人员客户那里所发生的重要商业事件,或者主管人员通知与该客户相关的所有员工关于新的客户处理例程。SMS 的另一个有趣的用途就是实现移动商务 (m-commerce),SMS 通常用于处理支付事务。为了使您快速入门,我们将向您展示如何从 Pocket PC 2002 Phone Edition 设备发送 SMS 消息,如以下示例所示。
返回页首
发送 SMS 示例
使用 Microsoft eMbedded Visual Basic 的简单窗体:图 1. SMS 示例应用程序
在此窗体中,您可以输入国际移动电话号码和文本消息。当您点击“Send”按钮后,消息就发送出去了,就是这么简单!
返回页首
代码演练
让我们看一下用于发送 SMS 消息的代码核心部分。首先,您需要声明很多 Microsoft Windows API:一个用于打开 SMS 消息处理组件
一个用于发送 SMS 消息
一个用于关闭 SMS 消息处理组件
Public Declare Function SmsOpen Lib "SMS" (ByVal ptsMessageProtocol As String, ByVal dwMessageModes As Long, ByRef psmshHandle As Long, ByRef phMessageAvailableEvent As Long) As Long Public Declare Function SmsSendMessage Lib "SMS" (ByVal smshHandle As Long, ByVal psmsaSMSCAddress As Long, ByVal psmsaDestinationAddress As String, ByVal pstValidityPeriod As Long, ByVal pbData As String, ByVal dwDataSize As Long, ByVal pbProviderSpecificData As String, ByVal dwProviderSpecificDataSize As Long, ByVal smsdeDataEncoding As Long, ByVal dwOptions As Long, ByRef psmsmidMessageID As Long) As Long Public Declare Function SmsClose Lib "SMS" (ByVal smshHandle As Long) As Long
还需要为不同 API 声明一些 API 常量:
Public Const SMS_MSGTYPE_TEXT = "Microsoft Text SMS Protocol" Public Const SMS_MODE_SEND = 2 ' Open in send mode Public Const SMSDE_GSM = 1 ' Use standard GSM encoding Public Const SMSAT_INTERNATIONAL = 1 ' International number format Public Const PS_MESSAGE_OPTION_NONE = 0 ' No message options Public Const PS_MESSAGE_CLASS0 = 0 ' Send immediately Public Const PSRO_NONE = 0 ' No replacements Public Const SMS_OPTION_DELIVERY_NONE = 0 ' No delivery options 以下是发送 SMS 消息的完整代码: Public Sub SendSMS(ByVal Number As String, ByVal Message As String) Dim SMSHandle As Long Dim SMSEvent As Long Dim SMSAddress As String Dim SMSProvider As String ' Open SMS Messaging Component Call SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, SMSHandle, SMSEvent) ' Set Address structure (UDT as string) SMSAddress = LongToBytes(SMSAT_INTERNATIONAL) & Number ' Set Provider structure (UDT as string) SMSProvider = LongToBytes(PS_MESSAGE_OPTION_NONE) & _ LongToBytes(PS_MESSAGE_CLASS0) & _ LongToBytes(PSRO_NONE) ' Send message If 0 = SmsSendMessage(SMSHandle, 0, SMSAddress, 0, Message, _ LenB(Message), SMSProvider, 12, SMSDE_GSM, _ SMS_OPTION_DELIVERY_NONE, 0) Then MsgBox "Message sent!", vbInformation, App.Title Else MsgBox "Could not send message!", vbCritical, App.Title End If ' Close SMS Messaging Component Call SmsClose(SMSHandle) End Sub
首先,打开 SMS 消息处理组件 (SmsOpen),并保存其句柄 (SMSHandle)。需要该句柄来调用其他 SMS API。
需要准备很多结构或 UDT(用户定义类型),以便调用 SmsSendMessage。因为 eMbedded Visual Basic 不支持 UDT,所以使用简单的字符串来模拟某个结构。
首先是包含 SMS 消息地址的结构。该地址结构包含的指示器,用来表示所提供的号码类型(在本例中为国际号码)和号码本身。
其次是包含关于服务提供商的各种选项的结构。该结构的第一部分指示没有选择特殊的选项,而第二部分指示应该立即发送消息。
最后一部分表明不应该进行任何替换。
在发送消息 (SmsSendMessage) 的调用中,提供了已准备的结构、消息文本和很多选项。最后,关闭句柄 (SmsClose)。
要获得完整的示例,请参阅本文的示例代码。您还可以在 Antonio Paneiro 的文章 UDTs (User Defined Types) with VBCE 中获得有关该技术的更多内容。
返回页首
小结
SMS 非常适用于短小且即时的文本通知。利用 Pocket PC 2002 Phone Edition 中提供的支持,您将能够使应用程序“可识别 SMS”。利用本例提供的示例代码,您可以完成需要完成的大部分任务。如果您全面接受(而不是部分接受)移动世界中的通讯机制与协议,则可以在适用时有计划地使用每个选项。相关文章推荐
- Windows窗体编程基础学习:使用 NotifyIcon 组件向任务栏添加应用程序图标
- Mac OS平台下应用程序安装包制作工具Packages的使用介绍
- Windows窗体编程基础学习:使用 NotifyIcon 组件向任务栏添加应用程序图标
- Symbian OS 图形应用编程 | RWsSprite 精灵的使用介绍(转)
- 面向切面编程的介绍和使用(Spring框架)
- VC编程DLL通知应用程序exe通信(使用自定义消息实现)
- Unity编程笔录-wikitude简单介绍和使用Android Studio打包apk
- Cordova各个插件使用介绍系列(一)—$cordovaSms发送短信
- 使用J2SE模拟MVC模式开发桌面应用程序的工程包的介绍
- ASP.NET MVC应用程序的安全性介绍总括(高级编程)
- 网络编程:HttpURLConnection使用介绍
- 使用 React.js 的渐进式 Web 应用程序:第 1 部分 - 介绍
- 【并发编程】ReentrantLock使用介绍
- Kotlin编程之类的介绍和使用
- 面向切面编程的介绍和使用(Spring框架)
- 面向切面编程的介绍和使用(Spring框架)
- C#多线程编程介绍——使用thread、threadpool、timer
- linux网络编程--网络编程的基本函数介绍与使用【转】
- [置顶] 面向切面编程的介绍和使用(Spring框架)
- 使用PHP开发Android应用程序技术介绍