当前位置: 代码迷 >> Delphi >> 写一个程序实现将自己EDIT的值转给另一个程序(有子窗口或者是PANEL)的文本框里,请教怎样实现
  详细解决方案

写一个程序实现将自己EDIT的值转给另一个程序(有子窗口或者是PANEL)的文本框里,请教怎样实现

热度:6793   发布时间:2013-02-25 00:00:00.0
写一个程序实现将自己EDIT的值转给另一个程序(有子窗口或者是PANEL)的文本框里,请问怎样实现
下面程式(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;