Как получить hwnd окна редактирования, когда их более одного? - PullRequest
2 голосов
/ 29 декабря 2011

У меня есть программа, которая не моя, которая имеет 3 блока TEdit и 3 объекта TButton.Я легко могу получить дескрипторы кнопки, используя:

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

Но я не могу сделать то же самое с полями редактирования, так как в них нет текста.Поэтому FindWindowEx(hWnd, IntPtr.Zero, "TEdit", "") может получить их все.Тем не менее, он получает только первый, который мне попадается, и мне нужен последний.Есть ли способ пропустить несколько ящиков или провести различие между ними?

1 Ответ

3 голосов
/ 26 сентября 2012

Я нашел ответ:

Учитывая, что есть 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 они находятся?

...