我该如何动态地得到Edit中的字符串?(0分)

  • 主题发起人 主题发起人 netbug
  • 开始时间 开始时间
N

netbug

Unregistered / Unconfirmed
GUEST, unregistred user!
请看:<br>&nbsp;function gettitle(hnd:THandle;param:pointer):boolean;stdcall;<br>&nbsp;var text:string;<br>&nbsp;begin<br>&nbsp;setlength(text,20);<br>&nbsp;getwindowtext(hnd,pchar(text),20);<br>&nbsp;form1.ListBox1.Items.Add(inttostr(hnd)+':'+text);<br>&nbsp;result:=true;<br>&nbsp;end;<br>procedure TForm1.Button1Click(Sender: TObject);<br>var i:integer;ewproc:enumwindowsproc;<br>begin<br>listbox1.Items.Clear;<br>ewproc:=gettitle;<br>i:=findwindow(nil,'Form1');//注意:<br>enumchildwindows(i,@ewproc,0);<br>我在此工程文件中有几个Edit,当我运行此文件时,我在几个Edit中<br>输入任意字符串,在ListBox1中都能得到体现,<br>如我另建个工程文件,窗体名为Form2,并此窗体有个Edit,随后运行,<br>接着我把上面的文件中的i:=findwindow(nil,'Form1')改为<br>i:=findwindow(nil,'Form2'),然后编译并运行,然而我却<br>得不到窗体Form2中Edit中的字符串(我得到的只是我在编写<br>窗体Form2时,在Object Inspector中对Edit输入的字符串),<br>请问:我该如何动态地得到Form2中Edit的字符串?<br>谢谢。
 
This function cannot retrieve the text of an edit control in another application.(from win32 reference)<br>use sendmessage(hwnd, wm_gettext, , ) can fulfill your task
 
请使用 &nbsp; <br>var u:pchar;<br>begin<br>&nbsp; U:= StrAlloc(250);<br>&nbsp; SendMessage(h,WM_GETTEXT,249,Integer(U));<br>end;
 
你得到的不是 edit 的句柄,
 
同意:sunstone
 
接受答案了.
 
后退
顶部