下面程式(test.exe)是实现点击button,实现将Pedit1的内容输送到另一个程式(receive.exe)的edit组件内CODE如下:
- Delphi(Pascal) code
procedure TPartForm.Button1Click(Sender: TObject);var h : HWND; s : string; h1,h2 : HWND;begin s := trim(Pedit1.Text); h := FindWindow('TForm1','Form1'); if h<>0 then begin h2 := FindWindowEx(h,0,'Tedit','CEdit1');//这个是我另一个程序(receive.exe)里面(只有一个edit组件,将接受Pedit1的内容) SendDlgItemMessage(h,h2,WM_SETTEXT,0,Integer(Pointer(Pchar(s)))); end else begin showmessage('w!!!'); end;
上面的是可以完全接收到,但是如果我再将程式(receive.exe)的edit放到一个panel或者其他容器组件,用上面的CODE就发现h2的值为0,我想知道如何能正确得到(receive.exe)里面的edit的hwnd值,不管edit放在任何不是FORM的容器里都可以直接读取到edit的HANDLE值。请各位大大帮忙下。已经查了蛮多资料了。哎!!或者大大们再给个思路也行。分如果少,可以再加
------解决方案--------------------------------------------------------
若放在面板上,先找面板句柄,再找Tedit句柄发送数据!
var
h,p1 : HWND;
s : string;
h1,h2 : HWND;
begin
s := trim(Pedit1.Text);
h := FindWindow('TForm1','Form1');
if h<>0 then
begin
p1 := FindWindowEx(h,0,'TPanel','Panel1');
h2 := FindWindowEx(p1,0,'Tedit','CEdit1');
SendDlgItemMessage(p1,h2,WM_SETTEXT,0,Integer(Pointer(Pchar(s))));
end
else
begin
showmessage('w!!!');
end;