其它地方看到的,我试验过,OK。<br><br>利用WM_COPYDATA消息<br><br>使用该消息涉及一个TcopyDataStruct结构类型的指针。该结构中有三个成员:<br>dwData 是一个32位的附加参数<br>cbData 表示要传递的数据区的大小<br>lpData 表示要传递的数据区的指针<br>下面举个例子。该例子由两个程序构成,分别为SendData和GetData。<br>SendData程序向GetData程序发送消息,并传递edit1中的字符串;GetData在收到消息后,把SendData发送的字符串接受下来,并显示在相应的edit1中。<br>1. SendData程序:<br>……<br>var<br> Form1: TForm1;<br>implementation<br>{$R *.DFM}<br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br> ds: TCopyDataStruct;<br> hd: THandle;<br>begin<br> ds.cbData := Length (Edit1.Text) + 1;<br> GetMem (ds.lpData, ds.cbData ); //为传递的数据区分配内存<br> StrCopy (ds.lpData, PChar (Edit1.Text));<br> Hd := FindWindow (nil, 'Form2'); // 获得接受窗口的句柄<br> if Hd <> 0 then<br> SendMessage (Hd, WM_COPYDATA, Handle,<br> Cardinal(@ds)) // 发送WM_COPYDATA消息<br> else<br> ShowMessage ('目标窗口没找到!');<br> FreeMem (ds.lpData); //释放资源<br>end;<br><br>2. GetData程序:<br> TForm2 = class(TForm)<br> Edit1: TEdit;<br> private<br> { Private declarations }<br> public<br> procedure Mymessage(var t:TWmCopyData);message WM_COPYDATA;<br> { Public declarations }<br> end;<br>var<br> Form2: TForm2;<br>implementation<br>procedure TForm2.Mymessage(var t:TWmCopyData);<br>begin<br> Edit1.text:=StrPas(t.CopyDataStruct^.lpData);//接受数据并显示。<br>end;