使用wm_copydata收发消息。 #include<windows.h> #define dest_win 0x2D097E //这里填入目标窗口的句柄 COPYDATASTRUCT SendText; void main() { char name[100]; strcpy(name,"这里输入要发送的内容。"); SendText.dwData =3; SendText.lpData=name; SendText.cbData =strlen(name); SendMessage((struct HWND__ *)dest_win,WM_COPYDATA,NULL,(long)&SendText ); } 下面是VB的接收程序 Private Sub Form_Load() gHW = Me.hwnd Hook Me.Caption = "Target" Me.Show Label1.Caption = Hex$(gHW) Text1.Text = Hex$(gHW) End Sub Private Sub Form_Unload(Cancel As Integer) Unhook End Sub 下面的程序复制到模块里 Type COPYDATASTRUCT dwData As Long cbData As Long lpData As Long End Type Public Const GWL_WNDPROC = (-4) Public Const WM_COPYDATA = &H4A Global lpPrevWndProc As Long Global gHW As Long 'Copies a block of memory from one location to another. Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long) Declare Function CallWindowProc Lib "user32" Alias _ "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As _ Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As _ Long) As Long Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As _ Long) As Long Public Sub Hook() lpPrevWndProc = SetWindowLong(gHW, GWL_WNDPROC, _ AddressOf WindowProc) Debug.Print lpPrevWndProc End Sub Public Sub Unhook() Dim temp As Long temp = SetWindowLong(gHW, GWL_WNDPROC, lpPrevWndProc) End Sub Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long If uMsg = WM_COPYDATA Then Call mySub(lParam) End If WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, _ lParam) End Function Sub mySub(lParam As Long) Dim cds As COPYDATASTRUCT Dim buf(1 To 255) As Byte Call CopyMemory(cds, ByVal lParam, Len(cds)) Select Case cds.dwData Case 1 Debug.Print "got a 1" Case 2 Debug.Print "got a 2" Case 3 Call CopyMemory(buf(1), ByVal cds.lpData, cds.cbData) a$ = StrConv(buf, vbUnicode) a$ = Left$(a$, InStr(1, a$, Chr$(0)) - 1) Form1.Text2 = cds.lpData & "// " & cds.cbData & "// " & a$ End Select End Sub