现在两个程序发送和接收都是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呵呵
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呵呵
begin
Memo1.Lines.Add(StrPas(t.CopyDataStruct^.lpData));//接受数据并显示。
end;
我是这么实现的:
1,在vb里面见立一个text,的空件,它是不用的,只是用来重载,
2,在text的消息处理函数中,处理wm_copydata消息,注意:你用delphi发的wm_copydata要是text的句并,这个可以用findwindow来找
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