⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sms.vb

📁 从指定GPS端口获取GPS数据按设定发送到指定手机上!
💻 VB
字号:
Imports System.Runtime.InteropServices
Imports interopserv = System.Runtime.InteropServices

Public Enum SMS_ADDRESS_TYPE
    SMSAT_UNKNOWN = 0
    SMSAT_INTERNATIONAL
    SMSAT_NATIONAL
    SMSAT_NETWORKSPECIFIC
    SMSAT_SUBSCRIBER
    SMSAT_ALPHANUMERIC
    SMSAT_ABBREVIATED
End Enum 'SMS_ADDRESS_TYPE

Public Structure PhoneAddress
    '/ <summary>The address type.</summary>
    Public AddressType As SMS_ADDRESS_TYPE
    '/ <summary>The phone number in string format.</summary>
    Public Address() As Char
End Structure 'PhoneAddress

Public Class SMS
    Private Shared SMS_MSGTYPE_TEXT As String = "Microsoft Text SMS Protocol"
    Private Shared SMS_MODE_SEND As Long = &H2
    Private Shared SMS_OPTION_DELIVERY_NONE As Long = &H0
    Private Shared SMS_OPTION_DELIVERY_NO_RETRY As Long = &H1
    Private Shared PS_MESSAGE_OPTION_NONE As Long = &H0

    Private Enum SMS_DATA_ENCODING
        SMSDE_OPTIMAL = 0
        SMSDE_GSM
        SMSDE_UCS2
    End Enum 'SMS_DATA_ENCODING

    Public Enum PROVIDER_SPECIFIC_MESSAGE_CLASS
        PS_MESSAGE_CLASS0 = 0
        PS_MESSAGE_CLASS1
        PS_MESSAGE_CLASS2
        PS_MESSAGE_CLASS3
    End Enum 'PROVIDER_SPECIFIC_MESSAGE_CLASS

    Private Enum PROVIDER_SPECIFIC_REPLACE_OPTION
        PSRO_NONE = 0
        PSRO_REPLACE_TYPE1
        PSRO_REPLACE_TYPE2
        PSRO_REPLACE_TYPE3
        PSRO_REPLACE_TYPE4
        PSRO_REPLACE_TYPE5
        PSRO_REPLACE_TYPE6
        PSRO_REPLACE_TYPE7
        PSRO_RETURN_CALL
        PSRO_DEPERSONALIZATION
    End Enum 'PROVIDER_SPECIFIC_REPLACE_OPTION

    Private Structure TEXT_PROVIDER_SPECIFIC_DATA
        Public dwMessageOptions As Long
        Public psMessageClass As PROVIDER_SPECIFIC_MESSAGE_CLASS
        Public psReplaceOption As PROVIDER_SPECIFIC_REPLACE_OPTION
    End Structure 'TEXT_PROVIDER_SPECIFIC_DATA

    <System.Runtime.InteropServices.DllImport("sms.dll")> _
    Private Shared Function SmsOpen(ByVal ptsMessageProtocol As [String], _
    ByVal dwMessageModes As Int32, _
    ByRef psmshHandle As IntPtr, _
    ByVal phMessageAvailableEvent As IntPtr) As IntPtr
    End Function

    <System.Runtime.InteropServices.DllImport("sms.dll")> _
    Private Shared Function SmsSendMessage(ByVal smshHandle As IntPtr, _
    ByVal psmsaSMSCAddress As Int32, _
    ByVal psmsaDestinationAddress As IntPtr, _
    ByVal pstValidityPeriod As Int32, _
    ByVal pbData As IntPtr, _
    ByVal dwDataSize As Int32, _
    ByVal pbProviderSpecificData() As Byte, _
    ByVal dwProviderSpecificDataSize As Int32, _
    ByVal smsdeDataEncoding As Int32, _
    ByVal dwOptions As Int32, _
    ByVal psmsmidMessageID As Int32) As IntPtr
    End Function

    <System.Runtime.InteropServices.DllImport("sms.dll")> _
    Private Shared Function SmsClose(ByVal smshHandle As IntPtr) As IntPtr
    End Function

    <StructLayout(LayoutKind.Sequential)> _
    Public Structure MsgSize
        Public MsgSz As Int32
    End Structure

    <StructLayout(LayoutKind.Sequential)> _
    Public Structure ProviderDataSize
        Public ProvDataSize As Int32
    End Structure

    Public Shared Sub SendMessage(ByVal sPhoneNumber As String, ByVal sMessage As String)
        Dim retVal As IntPtr = IntPtr.Zero
        Dim smsHandle As IntPtr = IntPtr.Zero
        Dim smsProviderData As IntPtr = IntPtr.Zero
        Dim smsMessage As IntPtr = IntPtr.Zero
        Dim ProvData(12) As Byte

        Try

            retVal = SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, smsHandle, IntPtr.Zero)
            If retVal.ToInt32 <> 0 Then
                Throw New Exception("Could not open SMS.")
            End If

            'Set address structure
            Dim smsatAddressType As Byte() = BitConverter.GetBytes(SMS_ADDRESS_TYPE.SMSAT_UNKNOWN)
            Dim ptsAddress As Byte() = System.Text.Encoding.Unicode.GetBytes(sPhoneNumber)
            Dim smsAddressTag(smsatAddressType.Length + ptsAddress.Length) As Byte
            Array.Copy(smsatAddressType, 0, smsAddressTag, 0, smsatAddressType.Length)
            Array.Copy(ptsAddress, 0, smsAddressTag, smsatAddressType.Length, ptsAddress.Length)
            Dim smsAddress As IntPtr = Marshal.AllocHLocal(smsAddressTag.Length)
            System.Runtime.InteropServices.Marshal.Copy(smsAddressTag, 0, smsAddress, smsAddressTag.Length)

            'Set message
            Dim smsMessageTag As Byte() = System.Text.Encoding.Unicode.GetBytes(sMessage)
            smsMessage = Marshal.AllocHLocal(smsMessageTag.Length)
            System.Runtime.InteropServices.Marshal.Copy(smsMessageTag, 0, smsMessage, smsMessageTag.Length)

            retVal = SmsSendMessage(smsHandle, 0, smsAddress, 0, smsMessage, smsMessageTag.Length, _
             ProvData, 12, SMS_DATA_ENCODING.SMSDE_OPTIMAL, SMS_OPTION_DELIVERY_NONE, 0)

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

        Try
            retVal = SmsClose(smsHandle)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -