API C # - как получить дескриптор текстового поля, где курсор находится в другой программе? - PullRequest
2 голосов
/ 28 ноября 2010

Я хочу получить дескриптор текстового поля, в котором находится курсор, в другой программе. все, что я могу найти, это как получить список элементов управления в окне с «EnumChildWindows», а затем искать «изменить» элемент управления .. (и это не работает для всех программ, которые имеют текстовое поле). я понятия не имею, как найти ту, в которой находится каретка и пользователь пишет. я действительно застрял с этим .. :( Большое спасибо, Ширан.

1 Ответ

1 голос
/ 28 ноября 2010

Вам нужно прыгнуть через несколько обручей pinvoke.Начните с GetForegroundWindow (), чтобы получить дескриптор активного окна верхнего уровня.Затем GetThreadWindowProcessId (), чтобы получить идентификатор потока, которому принадлежит это окно.Затем, наконец, GetGUIThreadInfo (), он возвращает несколько окон, принадлежащих потоку.Член GUITHREADINFO.hwndCaret дает вам дескриптор окна, которому принадлежит каретка.Между прочим, это не обязательно должно быть текстовое поле.

Посетите pinvoke.net, чтобы получить необходимые объявления.

...