procedure TForm1.WMCopyData(var MSG: TMessage);
var
Data : ^tagCOPYDATASTRUCT;
strMSG: string;
begin
Data:= Pointer(Msg.lParam);
strMSG:= StrPas(Data.lpData);
ShowMessage(strMSG);
end;
方法二:
TMyRecord=record s:string; end;
tt:TMyRecord;
var tt:TMyRecord; begin tt.s:='s2343243'; PostMessage(handle,WM_My,integer(tt),5); end;
发送消息,由于参数只能是一个integer,你这样发只能发4个字节,所以要改成发指针,比如:
var tt:TMyRecord; begin tt.s:='s2343243'; PostMessage(handle,WM_My,integer(@tt),5); end;
接收的时候当然也不能用原来的方法:My:=TMyRecord(msg.WParam);这样取回来了,也要把TMyRecord声明成指针:
type PMyRecord=^TMyRecord; var My:PMyRecord; my:=PMyRecord(msg.WParam);