vb使用SendMessage发送WM_COPYDATA消息,结构体指针或内存拷贝?高手请进
如题,我要实现两个进程窗体间的消息传递。
为了向另一个进程发送WM_COPYDATA消息,我封装了一个结构体:DataStruct
代码如下:
【模块中】:
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As
String) As Long
Public Declare Function SendMessagelong Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As
Long) As Long
Public Declare Function SendMessageAny Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As
Any) As Long
Public Const WM_COPYDATA As Long = &H4A
Public frmHwnd As Long
【窗体代码中】:
If frmHwnd <> 0 Then
'向窗体发送WM_COPYDATA消息
DataStruct.lpData = Left(CtlText, 99)
DataStruct.cbData = Len(DataStruct.lpData) + 1
DataStruct.dwData = 100
'SendMessage frmHwnd, WM_COPYDATA, 0, ByVal VarPtr(DataStruct)
SendMessagelong frmHwnd, WM_COPYDATA, 0, ByVal VarPtr(DataStruct)
'SendMessageAny frmHwnd, WM_COPYDATA, 0, ByVal DataStruct
End If
SendMessage语句,只有VarPtr(DataStruct)这行能触发接收进程程序中窗体的
DefWndProc回调事件,但接收不到数据-数据为空串(接收程序代码是正确的,已用2个c#程序
发送、接收消息测试通过)。
不知DataStruct数据如何传递,VarPtr?,RtlCopyMemory?ObjPtr?