Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2015, 21:38   #1
Foxpronet
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 67
По умолчанию Получить handle стороннего окна системы

Можно-ли быстро получить handle активного (с курсором ввода) дочернего элемента чужого окна без привлечения enumwindows?
То есть вопрос в том нужно ли перечисление всех дочерних элементов тек. окна, дабы узнать тот, где находится в данный момент курсор ввода?
Какой-нибудь API-аналог небезызвестной функции WindowFromPoint(handle), но для регистрации фокуса именно активного компонента..
Foxpronet вне форума Ответить с цитированием
Старый 20.05.2015, 22:32   #2
Должно быть имя?
Пользователь
 
Регистрация: 11.04.2015
Сообщений: 68
По умолчанию

А почему бы не глянуть реализацию того же ? WindowFromPoint
Должно быть имя? вне форума Ответить с цитированием
Старый 20.05.2015, 23:14   #3
Foxpronet
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 67
По умолчанию

Стыдно признаться наверное, но в C вообще не врубаюсь, а в самой Delphi ее реализация скрыта. Вопрос, собственно, в том есть ли такая функция в самой delphi? Ведь есть же, к примеру, GetForegroundWindow для получения handle активного окна, казалось бы логичным, что должна быть и для поиска активного дочернего sub- компонента чужого окна(по аналогии с GetFocus : thandle, но она катит, как я понял, только в рамках самой программы delphi).
Foxpronet вне форума Ответить с цитированием
Старый 21.05.2015, 05:41   #4
Должно быть имя?
Пользователь
 
Регистрация: 11.04.2015
Сообщений: 68
По умолчанию

Вот так можно
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  Currentid, id:DWORD;
begin
    id := GetWindowThreadProcessId(GetForegroundWindow, nil);
    Currentid := GetCurrentThreadId;
    AttachThreadInput(Currentid, id, true);

    Form1.Caption := integer(GetFocus()).ToString;

    AttachThreadInput(Currentid, id, false);
end;
Должно быть имя? вне форума Ответить с цитированием
Старый 21.05.2015, 10:21   #5
Foxpronet
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 67
По умолчанию

Где-где, а у вас имя быть должно! )) Спасибо, то что надо!
Foxpronet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
получить handle окна созданного функцией CreateProcess fate Win Api 2 26.02.2011 19:05
Как узнать handle окна имея handle обного из его компонентов SeRhy Win Api 2 18.10.2009 19:31
Получить Handle TEdit'a, зная дескриптор родительского окна Cold_Night Win Api 2 13.02.2009 16:47
Как получить handle главного окна, зная имя приложения? Altera Win Api 8 22.12.2008 18:52
Как имея handle окна узнать handle edit-a который находится в етом окне SeRhy Общие вопросы Delphi 1 20.07.2008 13:48