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