Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
Public Function WndProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
dim a(100-1) as byte, lLen as long, str as string
If uMsg = 12 Then
copymemory a(0), byval wParam, 100
lLen = instrB(1, a, chr(0)) 'C 标准字符串以 \0 结束
if lLen <> 0 then '如果发送的字符串没有用 \0 结束(因此没有用lstrcpy而是用copymemory),就认为字符串长 100,否则截短
redim preserve a(lLen-1)
end if
str = strconv(a, vbUnicode)
MsgBox "收到dll字符串消息,字符串是:(" & str & ")"
End If
WndProc = CallWindowProc(GetProp(hWnd, OLDWNDPROC), hWnd, uMsg, wParam, lParam)
End Function