Привет народ! После того как я перебрал Enum'ом все окна, мне нужно определить, какое дочернее окно имеет сейчас фокус ввода? Чтобы этому окну послать нужный мне текст. Я пробывал GetWindowsInfo, GetForegroundWindow, GetFocus - пока ничего не помогает! Как определить что в данном окне стоит курор ввода?
green5 GetForegroundWindow, таки да, возвращает окно, с которым в текущий момент работает пользователь, - но возращается хэндл главного родительского окна приложения!!!, а не конкретного дочернего! А GetFocus, хотя и возвращает хэндл дочернего окна, которое сейчас имеет фокус ввода, но эта функция работает только в контексте твоего приложения!, т.е. с помощью нее ты только можеш "найти" свои окна, а не чужие! shoo Ща попробую эту функцию!
объясни подробнее ситуацию. зачем ты делаешь энум. точнее, что ты перебераешь - десктопные окна, или дочерние окна. почему GetFocus не работает/не подходит. что у тебя за интерфейс. если мди - так может WM_MDIGETACTIVE поможет.
shoo Выше я написал, что GetFocus, хотя и возвращает хэндл дочернего окна, которое сейчас имеет фокус ввода, но эта функция работает только в контексте твоего приложения!, т.е. с помощью нее ты только можеш "найти" свои окна, а не чужие! - а мне нужны чужие! Поэтому эта функция не подходит. Тут неважно, перебираю я окна или нет (и как я их перебираю), моя конечная цель - узнать какое окно сейчас имеет фокус (это окно чужого приложения!), чтобы ему послать некоторый текст. Вот и все. Это может быть мди и др. я не знаю, главное получить нэндл. nobodyzzz Можно подробнее? А то написал чего то - непонятно Например про функцию GetActiveWindow() - This function retrieves the window handle to the active window associated with the thread that calls the function. Что означает, что с помощью этой функции ты сможеш найти, только активное окно своего приложения!, а не чужого! К тому же я ее пробывал - не подходит, равно как и GetForegroundWindow
The AttachThreadInput function attaches or detaches the input processing mechanism of one thread to that of another thread. Если я правильно понял то можно приатачить свой input processing mechanism к чужому проге и тогда по идее GetActiveWindow() должно канать, хотя я не уверен ибо не проверял=)
Нашлось таки решение! - подсказал один чувак Код (Text): var Info: TGUIThreadInfo; begin Info.cbSize := sizeof(Info); if GetGUIThreadInfo(0, Info) then ShowMessageFmt('Дескриптор окна, имеющего фокус: %.8x', [Info.hwndFocus]) end