如何获取外部程序下同类型名的控件句柄,例如spy++下
-窗口 00040128 "FrmMain" FrmSci
 -窗口 000F616A "frm" TPanel
  -窗口 000606F4 "" TComboBox
  -窗口 00180420 "" TComboBox
  -窗口 000806F2 "" TComboBox
  -窗口 00204088 "" TComboBox我的意图是想获取 000806F2 窗口句柄,可是现在有4个TCombobox 并且都没有显示标题,这样该如何区分呢?应该用什么函数?最好写上代码 c#的最好了
谢谢!

解决方案 »

  1.   

    应该使用FindWindowEx  API函数吗?
      

  2.   

    EnumWindows() API
      

  3.   

    EnumWindow,枚举所有的窗口,然后自己一个个过滤,找到需要的
      

  4.   

    还是FindWindowEx比较方便。父窗口句柄hwndParent(那个000F616A)用来限制找哪些窗口。传入lpszWindow为NULL的时候,任何一个子窗口都符合条件。
    找下一个子窗口则把刚找到的句柄作为hwndChildAfter传入。
    HWND FindWindowEx(
        HWND hwndParent,
        HWND hwndChildAfter,
        LPCTSTR lpszClass,
        LPCTSTR lpszWindow
    );
      

  5.   

    EnumWindow 只能枚举父窗体,EnumChildWindow才能枚举子窗体的,我是这么理解的。
      

  6.   

    还有,就算是用EnumChildWindow枚举出了所有的子窗体,用什么方式来进行区分呢? 几个都是同类型名的 都没有显示标题啊~
      

  7.   

    gomoku 的方法确实是属于遍历了所有的子窗体,那如何判断现在我遍历到的句柄就是我想要的呢?因为毕竟每次应用程序都会改变句柄的