请教各位,问个Delphi中有关winsight32的问题:(50分)

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

netbug

Unregistered / Unconfirmed
GUEST, unregistred user!
我用windows中的记事本记录下我想问的问题,然后我用winsight32得到<br>此窗体的类名与窗体名,请看程序:<br>procedure TForm1.Button1Click(Sender: TObject);<br>var s1,s2,s3:pchar;h:integer;<br>begin<br>&nbsp;s1:='问题1 - 记事本';<br>&nbsp;s2:='Notepad';<br>&nbsp;h:=findwindow(s2,s1);<br>&nbsp;getwindowtext(h,s3,100);<br>&nbsp;edit1.text:=s3;<br>&nbsp;end;<br>可是我得到的是"问题1 - 记事本"这个窗体名,而不是这个窗体中的内容,<br>请问我该如何做才能得到这个窗体中的内容呢?谢谢。
 
&gt; h:=findwindow(s2,s1);<br>得到NotePad主窗体的Handle<br>&gt; getwindowtext(h,s3,100);<br>得到Notepad主窗体的Text,当然是标题<br><br>用EnumChilewindow,得到Notepad中Memo控件的Hanle,然后GetWindowText(...)<br>
 
我用EnumChildWindows时,发现此API有三个参数,我想问:<br>第一个是不是Notepad主窗体的句柄?第二与第三个参数是指什么?<br>并此函数返回的是longbool类型,不是Handle,那我想问:要想达到<br>我的要求,我该如何做?谢谢。
 
var strbuf:array[0..255]<br><br>function EnumChildWindowsProc(H: HWnd; lparam: longint): Boolean; stdcall;<br>var<br>&nbsp; Buffer: array[0..10] of Char;<br>begin<br>&nbsp; Result := True; &nbsp;<br>&nbsp; Getclassname(h,buffer,10);<br>&nbsp; if Trim(StrPas(Buffer))='Edit' then<br>&nbsp; begin<br>&nbsp; &nbsp; SendMessage(h,WM_GETTEXT,255,LongInt(@strbuf));<br>&nbsp; &nbsp; Result:=False; &nbsp;<br>&nbsp; end;<br>end;<br><br><br>EnumChildWindows(Notepad主窗体的句柄, @EnumChildWindowsProc, 0); &nbsp;<br>运行过此函数后strbuf 就是您要的内容。
 
用enumchildwindows太麻烦了罢,<br>hedit:=findwindowex(hnotepad, 0, pchar('Edit'),nil);<br>其实这个问题早就讨论过了, search 一下
 
接受答案了.
 
后退
顶部