现在两个程序发送和接收都是delphi写的.发送端给接收端发串字符发送
procedure TForm1.Button1Click(Sender: TObject);
var
 ds: TCopyDataStruct;
 hd: THandle;
begin
 ds.cbData := Length (Edit1.Text) + 1;
 GetMem (ds.lpData, ds.cbData ); //为传递的数据区分配内存
 StrCopy (ds.lpData, PChar (Edit1.Text));
 Hd := FindWindow (nil, 'Form2'); // 获得接受窗口的句柄
 if Hd <> 0 then
      SendMessage (Hd, WM_COPYDATA, Handle,
          Cardinal(@ds)) // 发送WM_COPYDATA消息
 else
   ShowMessage ('目标窗口没找到!');
  FreeMem (ds.lpData); //释放资源
end;接收
procedure TForm1.Mymessage(var t:TWmCopyData);
begin
  Memo1.Lines.Add(StrPas(t.CopyDataStruct^.lpData));//接受数据并显示。
end;现在接收的程序用vb怎么写?不懂vb呵呵

解决方案 »

  1.   

    SendMessage这个发消息函数在vb里也可以用啊,先声明API函数~~
      

  2.   

    全部用sdk的方法自己写东西,也许有控件或dll什么的
      

  3.   

    就是下面这句用vb怎么写?StrPas(t.CopyDataStruct^.lpData)procedure TForm1.Mymessage(var t:TWmCopyData);
    begin
      Memo1.Lines.Add(StrPas(t.CopyDataStruct^.lpData));//接受数据并显示。
    end;
      

  4.   

    vb中需要通过重载窗体过程来实现,
    我是这么实现的:
    1,在vb里面见立一个text,的空件,它是不用的,只是用来重载,
    2,在text的消息处理函数中,处理wm_copydata消息,注意:你用delphi发的wm_copydata要是text的句并,这个可以用findwindow来找
      

  5.   


    Function WndProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    '该函数为Form的窗口处理函数。
      Dim L As Long
      Dim l1 As Long
      Dim po As POINTAPI
      
      Select Case uMsg
        
        Case WM_COPYDATA'有事件产生
          Select Case lParam
            
          Case Else
          End Select
        Case Else
          WndProc = CallWindowProc(lproc, hwnd, uMsg, wParam, lParam)
      End Select
    End Function
    '-----------------------------END-----------------------------------
    '使用
    Private Sub Form_Load()
       '将WndProc函数设置为Form2的窗口处理函数并且保存原来窗口处理函数句柄
       lproc = SetWindowLong(form2.hwnd, GWL_WNDPROC, AddressOf WndProc)
    End Sub