当有多个编辑框时,如何获取编辑框

本文关键字:编辑 何获取 获取 | 更新日期: 2023-09-27 18:19:04

我有一个不是我的程序,它有3个TEdit框和3个TButton对象。我可以很容易地获得按钮手柄通过使用:

IntPtr buttonhwnd = FindWindowEx(mainhwnd, IntPtr.Zero, "TButton", "Button Text");

但是我不能对编辑框做同样的事情,因为它们里面没有任何文本。因此FindWindowEx(hWnd, IntPtr.Zero, "TEdit", "")可以得到所有这些。然而,它只得到它遇到的第一个,我需要最后一个。是否有一种方法可以跳过一些框或区分它们?

当有多个编辑框时,如何获取编辑框

我找到了答案:

如果有3个控件,我可以使用:

//Get first occuring Edit box
IntPtr edithWnd = FindWindowEx(mainhWnd, IntPtr.Zero, "TEdit", "");
//And the second
edithWnd = FindWindowEx(mainhWnd, edithWnd, "TEdit", "");
//And finally the one I want
edithWnd = FindWindowEx(mainhWnd, edithWnd, "TEdit", "");

虽然不是动态的,但它为我完成了工作。然而,对于将来可能需要这个的人来说:除了知道他们在什么Z位置之外,还有什么方法可以区分他们吗?