'指针
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Type SendSM
nErrorCode As Integer
End TypePrivate Type RecieveSM
sMsgID As String
nIsReport As Integer
nMsgFormat As Integer
sRecvTime As String
sSrcrmID As String
sDestTermID As String
nMsgLen As Integer
sMsgContent As String
End Type'接收
Public Sub Recieve(Server As String, UID As String, _
PWD As String, DataBase As String)
Dim DataBuf(315) As Byte
Dim myMsg As RecieveSM
ret = SMGPDeliver(0, VarPtr(DataBuf(0)))
CopyMemory myMsg, DataBuf(0), LenB(myMsg)
'MsgBox ret, vbApplicationModal
If ret = 0 Then
Set conn = CreateObject("ADODB.Connection")
Dim str As String
str = "DRIVER={SQL Server};server=" & Server & ";uid=" & UID & ";pwd=" & PWD & ";database=" & DataBase
conn.Open str
SQL = "insert into SMGPDeliver(sMsgID,nIsReport,nMsgFormat,sRecvTime,sSrcrmID," & _
"sDestTermID,nMsgLen,sMsgContent) values('" & myMsg.sMsgID & "'," & _
myMsg.nIsReport & "," & myMsg.nMsgFormat & ",'" & myMsg.sRecvTime & "','" & _
myMsg.sSrcrmID & "','" & myMsg.sDestTermID & "'," & myMsg.nMsgLen & ",'" & _
myMsg.sMsgContent & "')"
conn.Execute SQL
conn.Close
Set conn = Nothing
End If
End Sub
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Type SendSM
nErrorCode As Integer
End TypePrivate Type RecieveSM
sMsgID As String
nIsReport As Integer
nMsgFormat As Integer
sRecvTime As String
sSrcrmID As String
sDestTermID As String
nMsgLen As Integer
sMsgContent As String
End Type'接收
Public Sub Recieve(Server As String, UID As String, _
PWD As String, DataBase As String)
Dim DataBuf(315) As Byte
Dim myMsg As RecieveSM
ret = SMGPDeliver(0, VarPtr(DataBuf(0)))
CopyMemory myMsg, DataBuf(0), LenB(myMsg)
'MsgBox ret, vbApplicationModal
If ret = 0 Then
Set conn = CreateObject("ADODB.Connection")
Dim str As String
str = "DRIVER={SQL Server};server=" & Server & ";uid=" & UID & ";pwd=" & PWD & ";database=" & DataBase
conn.Open str
SQL = "insert into SMGPDeliver(sMsgID,nIsReport,nMsgFormat,sRecvTime,sSrcrmID," & _
"sDestTermID,nMsgLen,sMsgContent) values('" & myMsg.sMsgID & "'," & _
myMsg.nIsReport & "," & myMsg.nMsgFormat & ",'" & myMsg.sRecvTime & "','" & _
myMsg.sSrcrmID & "','" & myMsg.sDestTermID & "'," & myMsg.nMsgLen & ",'" & _
myMsg.sMsgContent & "')"
conn.Execute SQL
conn.Close
Set conn = Nothing
End If
End Sub
Private Type RecieveSM
sMsgID As Long
……
End Type ret = SMGPDeliver(0, VarPtr(DataBuf(0)))
CopyMemory myMsg, DataBuf(0), LenB(myMsg)
msgIDSize = getStrsize (myMsg.sMsgID)
CopyMemory byval str1, byval myMsg.sMsgID, msgSize