EnumChildWindows的问题(100分)

  • 主题发起人 主题发起人 softwind
  • 开始时间 开始时间
S

softwind

Unregistered / Unconfirmed
GUEST, unregistred user!
EnumChildWindows可以列出一个窗口下所有的控件内容,象Edit,Button<br>当窗体下有多个比如TEdit时候,我要向某一个Edit进行操作时,该如何来识别?<br>Handle在每次重新打开窗口后都是不同的,Spy++检测到的好像也没有一个唯一的标识符。<br>EnumChildWindows我是用来对另一个应用程序操作的,该怎么做?
 
我正和你一样在寻求这个答案.看我的问题.互相帮助,你解决了给我发信吧.w8g8h@sina.com<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=826082<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=819474<br><br>
 
function GetButtonHandle(hwnd: Integer; lparam: Longint): Boolean; stdcall;<br>var<br>&nbsp; buffer: array[0..255] of Char;<br>&nbsp; buffer1: array[0..255] of Char;<br>begin<br>&nbsp; Result := True;<br>&nbsp; //得到目标窗口的控件<br>&nbsp; GetClassName(hwnd, buffer, 256);<br>&nbsp; //找到发消息的目标窗口的目标控件<br>&nbsp; if StrPas(Buffer) = 'Button' then<br>&nbsp; begin<br>&nbsp; &nbsp; GetWindowText(hwnd, buffer1, 100);<br>&nbsp; &nbsp; if buffer1 = '送讯息(&amp;S)' then<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; PInteger(lparam)^ := hwnd; //得到目标控件的Hwnd(句柄)<br>&nbsp; &nbsp; &nbsp; Result := False; //终止循环<br>&nbsp; &nbsp; end;<br>&nbsp; end;<br>end; //end of function<br>。。。。。。。。。。。。。。。。。。。。。。。。。。<br>EnumChildWindows(Handle, @GetButtonHandle, Integer(@Handle));
 
to robertcool:<br>这些我们都会了主要是我们能得到一个窗体上很多个TEdit控件的handle,在这么多的控件handle<br>中怎么找到我们想要的那个呢?
 
Handle的动态生成的当然不行了,<br>你可以在窗口开启后,将检索到的所有Handle放个一个数组,然后不就可以操作了吗!
 
我是这样解决的:<br>1.编写一个程序定义一个全局变量:Cnt:integer=0;<br>&nbsp; 然后:在EnumChildWindowsProc函数里:<br>&nbsp; &nbsp; &nbsp; Inc(cnt);<br>&nbsp; &nbsp; &nbsp; SendMessage(aHwnd,WM_SETTEXT,0,LongInt(PChar(IntToStr(cnt))));<br>这样我们就看到了每一个控件的序号.记这个序号.<br>2.再编写我们真正要编写的程序.<br>同样定义一个全局变量Cnt,<br>在EnumChildWindowsProc里对Cnt进行比较就找到了我们要找到的控件了.
 
http://www.csdn.net/develop/read_article.asp?id=11815
 
我又想收藏
 
可以用Spy++看看那个控件的ID是多少<br>ID是不会变的。但不同的版本可能会不同
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1315762<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=230900<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=826482 &nbsp;<br>
 
你可以用windowfrompoint &nbsp;函数获得控件句柄。<br>&nbsp;如果存在Z序列,就不一定能获得真实的句柄。可以采用其他方法。 <br>你最好说说对控件操作什么内容,可以采用其他的方法。<br><br>低价转让win98,win2k,winxp屏幕取词原代码和取词技术。可取IE,<br>需要的联系我:linsen633@sohu.com
 
后退
顶部