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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2013, 10:22   #1
ivt22
Пользователь
 
Регистрация: 23.07.2013
Сообщений: 81
По умолчанию Отловить активное окно

Здравствуйте. Подскажите как отловить событие при котором активируется окно чужой программы.

Как получить Handle на активное окно я разобрался.

Код:
H: THandle;

//..

 H := GetForegroundWindow;
дальше можно уже работать с окном.

Но как получить этот указатель автоматически при активации окно. Допустим вылезло окно программы Word. Сразу указателю присваивается окно Worda. И прога записывает в какое время какое окно открылось?
ivt22 вне форума Ответить с цитированием
Старый 27.09.2013, 10:45   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

По таймеру, компонент TTimer. Или же более сложный путь: установка хука на HH_CBT.
Человек_Борща вне форума Ответить с цитированием
Старый 27.09.2013, 10:54   #3
ivt22
Пользователь
 
Регистрация: 23.07.2013
Сообщений: 81
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
По таймеру, компонент TTimer. Или же более сложный путь: установка хука на HH_CBT.
Да, по таймеру у меня получилось, но ведь он наверное сильно загружает процесс. А можно какой-нибудь пример с HOOkami. а то я почитал немного, не очень понял, не нашёл конкретного примера как перехватить сообщение об активации окна.
ivt22 вне форума Ответить с цитированием
Старый 27.09.2013, 10:56   #4
ivt22
Пользователь
 
Регистрация: 23.07.2013
Сообщений: 81
По умолчанию

Поставил таймер на 1 милисекунду. Впринципе работает в реальном времени, но как это повлияет на быстродействие?
ivt22 вне форума Ответить с цитированием
Старый 27.09.2013, 12:17   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как это повлияет на быстродействие?
А никак скорее всего. Но лучше замени таймер на Thread в котором Sleep(10). Этого хватит вполне.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.10.2013, 13:45   #6
Игорь С++
Пользователь
 
Регистрация: 23.06.2012
Сообщений: 19
По умолчанию

1) " А никак скорее всего " - да ну , загрузит норм .
2) " Но лучше замени таймер на Thread в котором Sleep(10). " - WM_TIMER так же как и Sleep менее 58 мс не обрабатывает и всё , что меньше , на разных компьютерах будет срабатывать по разному . Для измерение более точных временных интервалов в WinAPI есть другие функции ( специально для этого предназначенны ) .
Игорь С++ вне форума Ответить с цитированием
Старый 09.10.2013, 14:28   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
WM_TIMER так же как и Sleep менее 58 мс не обрабатывает
Я не из-за этого советую сопроцесс.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.10.2013, 14:51   #8
Игорь С++
Пользователь
 
Регистрация: 23.06.2012
Сообщений: 19
По умолчанию

Цитата:
Я не из-за этого советую сопроцесс.
Пардон , не понял .
Игорь С++ вне форума Ответить с цитированием
Старый 11.10.2013, 04:14   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
1) " А никак скорее всего " - да ну , загрузит норм .
не загрузит, таймер основан на WM_TIMER итак.
Цитата:
Для измерение более точных временных интервалов в WinAPI есть другие функции ( специально для этого предназначенны ) .
а там не мерять надо, а ждать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.10.2013, 11:26   #10
Игорь С++
Пользователь
 
Регистрация: 23.06.2012
Сообщений: 19
По умолчанию

Цитата:
а там не мерять надо, а ждать.
Ты же понял про что я говорю !
Игорь С++ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как узнать, что окно активное/не активное beegl Общие вопросы Delphi 6 01.01.2013 22:48
Подождать пока активное окно TwiX Общие вопросы Delphi 3 20.03.2012 08:54
Активное окно Messir_Leonard Win Api 4 22.04.2008 19:25
Активное окно MadReason Win Api 12 10.01.2008 17:44
Предыдущее активное окно martinz Win Api 3 25.11.2007 15:02