var
  PassHandle: HWND;   
  UserHandle: HWND; 
begin
  //frmHandle 全局句柄变量窗体创建时已查找到
  PassHandle := FindWindowEx(frmHandle,0,'Edit',nil);
  UserHandle := FindWindowEx(frmHandle,PassHandle,'Edit',nil);
  OKBtn := FindWindowEx(frmHandle,UserHandle,'Button',nil);
end;为啥前两个的句柄都能找到OKBtn的却找不到呢.

解决方案 »

  1.   

    用spy+看过的..那个按钮的父级就是窗体..按钮也有自己的句柄.不是画上去了.纳闷ing
      

  2.   

    OKBtn := FindWindowEx(frmHandle,0,'Button',nil);
        
    第二个参数hwndChildAfter :子窗口句柄。查找从在Z序中的下一个子窗口开始。子窗口必须为hwndPareRt窗口的直接子窗口而非后代窗口。如果HwndChildAfter为 NULL,查找从hwndParent的第一个子窗口开始。如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口。
        OKBtn的排序是否在UserHandle之前,所以从UserHandle开始找找不到,先试试从0开始能否找到,再试试PassHandle 后能否找到,能找到说明我的推断是对的。