|
下面是发送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
'打开SMS消息组件 Call SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, SMSHandle, SMSEvent)
'设置地址结构体 SMSAddress = LongToBytes(SMSAT_INTERNATIONAL) & Number
'设置提供者结构体 SMSProvider = LongToBytes(PS_MESSAGE_OPTION_NONE) & _ LongToBytes(PS_MESSAGE_CLASS0) & _ LongToBytes(PSRO_NONE)
'发送消息 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
'关闭SMS消息组件 Call SmsClose(SMSHandle)
End Sub
首先SMS消息组件被打开(SmsOpen),它的句柄被保存(SMSHandle)。调用SMS API时该句柄是必须的。
调用SmsSendMessage时需要一些结构体或者UDT(用户定义类型)。因为嵌入式Visual Basic缺乏对UDT的支持,简单字符串用于模拟结构体。
第一个是包含SMS消息地址的结构体。地址结构体包含支持的号码类型以及号码本身。下一个结构体是关于服务提供者的一些选项。该结构体的第一部分指示没有选择特定的项,第二部分显示消息必须立即发送,最后的部分规定不能替换。
在发送消息(SmsSendMessage)的调用中,提供了准备好的结构体、消息文本和一些选项。最后,句柄被关闭(SmsClose)。
结论
SMS对于短小及时的文本通知有很大用处。在Pocket PC 2002 Phone Edition的支持下,你可以使应用程序"SMS自唤醒"。使用例程的代码,大部分需要的操作完成了。如果你接受移动世界,按照通讯机制和协议,更多是使用"并且"而不是"或者",你能按需求使用任意选项。 进入讨论组讨论。
|