一:发送方
View Code
var
hwnd:THandle;
cpStruct:COPYDATASTRUCT;
begin
hwnd: = FindWindow( nil ,PChar(FORMNAME));
if hwnd <> 0 then
begin
cpStruct.dwData: = 0 ;
cpStruct.cbData: = length( ' test ' ) + 1 ;
cpStruct.lpData: = pchar( ' test ' );
SendMessage(Handle,WM_COPYDATA, 0 ,Cardinal(@cpStruct)); // lParam和wParam的顺序不能交换,具体原因还未找到
end ;
end ;
hwnd:THandle;
cpStruct:COPYDATASTRUCT;
begin
hwnd: = FindWindow( nil ,PChar(FORMNAME));
if hwnd <> 0 then
begin
cpStruct.dwData: = 0 ;
cpStruct.cbData: = length( ' test ' ) + 1 ;
cpStruct.lpData: = pchar( ' test ' );
SendMessage(Handle,WM_COPYDATA, 0 ,Cardinal(@cpStruct)); // lParam和wParam的顺序不能交换,具体原因还未找到
end ;
end ;
二:接收方
View Code
procedure
WMCopyData(
var
Message: TWMCopyData);
message
WM_COPYDATA;
procedure TForm1.WMCopyData( var Message: TWMCopyData);
begin
if message .Msg = WM_COPYDATA then
Self.Text: = PChar( message .CopyDataStruct.lpData)
else
ShowMessage( ' 方法不对 ' );
end ;
procedure TForm1.WMCopyData( var Message: TWMCopyData);
begin
if message .Msg = WM_COPYDATA then
Self.Text: = PChar( message .CopyDataStruct.lpData)
else
ShowMessage( ' 方法不对 ' );
end ;
本文详细介绍了如何使用WM_COPYDATA消息实现Windows环境下进程间的单向通信。通过具体的Delphi代码示例,展示了发送方和接收方如何构造和解析COPYDATASTRUCT结构,实现数据的有效传递。
1万+

被折叠的 条评论
为什么被折叠?



