Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
155 / 9 / 2
Регистрация: 14.08.2019
Сообщений: 771

Определить в каком окне было совершено нажатие (WH_KEYBOARD & SetWindowsHookEx)

27.09.2021, 22:46. Показов 1855. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для WH_MOUSE есть специальная структура MOUSEHOOKSTRUCT в которой можно получить hwnd окна. Как сделать это для WH_KEYBOARD?

C++
1
2
3
4
5
6
7
8
9
10
11
LRESULT CALLBACK messageHandler(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode < 0)
    {
        return CallNextHookEx(hookHandle, nCode, wParam, lParam);
    }
 
    // ???
 
    return CallNextHookEx(hookHandle, nCode, wParam, lParam);
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.09.2021, 22:46
Ответы с готовыми решениями:

Срабатывание хука по SetWindowsHookEx(WH_KEYBOARD, ...)
КАК ХУКИ ОПРЕДЕЛИТЬ ПРИ ЭТОМ ЧТОБ НАПРИМЕР ПРИ НАЖАТИИ 1 В ЛЮБОМ ПРИЛОЖЕНИЕ ИГРАЛСЯ ВЕЙВ ФАЙЛ? Я ХУК ОПРЕДЕЛИЛ...

Как получить объект на котором было совершено событие?
особенно интересуют события OnClick и событие при котором появляется всплывающее меню PopupMenu.

Найти год, когда было совершено максимальное количество покупок.
Есть таблица покупателей Customers, с параметрами: customer_id, cutomer_name, date(дата покупки, записана как '03.04.2005'). ---1...

5
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
27.09.2021, 23:01
GetFocus.
1
155 / 9 / 2
Регистрация: 14.08.2019
Сообщений: 771
27.09.2021, 23:03  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
GetFocus.
Но ведь может получиться так что сообщение в процесс пришло пока окно было свернуто. И что тогда? Я уверен, есть нормальные способы вытащить сразу HWND, просто я пока о них не знаю.
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
27.09.2021, 23:57
Цитата Сообщение от eXpl01TeR Посмотреть сообщение
Но ведь может получиться так что сообщение в процесс пришло пока окно было свернуто. И что тогда?
Я ничего не понял, процедура хука вызывается в момент вызова GetMessage или PeekMessage. И если там есть WM_KEYUP или WM_KEYDOWN вызывается процедура хука.
0
155 / 9 / 2
Регистрация: 14.08.2019
Сообщений: 771
28.09.2021, 00:03  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
И если там есть WM_KEYUP или WM_KEYDOWN вызывается процедура хука.
Если я не ошибаюсь, помимо сообщений WM_KEYUP и WM_KEYDOWN при перехвате WH_KEYBOARD приходят так-же WM_ACTIVATE, WM_APPCOMMAND, WM_CHAR, WM_DEADCHAR, WM_HOTKEY, WM_KILLFOCUS, WM_SETFOCUS, WM_SYSDEADCHAR, WM_SYSKEYDOWN, WM_SYSKEYUP и WM_UNICHAR. Какое-то событие вовсе может прийти в неактивное окно, я например очень люблю делать "автономных" ботов которые работают в свёрнутых окнах при помощи PostMessage. Как мне кажется, глупо рассчитывать что в момент прихода одного из этих сообщений активное окно будет именно тем самым.
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
28.09.2021, 00:14
Цитата Сообщение от eXpl01TeR Посмотреть сообщение
Если я не ошибаюсь, помимо сообщений WM_KEYUP и WM_KEYDOWN при перехвате WH_KEYBOARD приходят так-же WM_ACTIVATE, WM_APPCOMMAND, WM_CHAR, WM_DEADCHAR, WM_HOTKEY, WM_KILLFOCUS, WM_SETFOCUS, WM_SYSDEADCHAR, WM_SYSKEYDOWN, WM_SYSKEYUP и WM_UNICHAR.
Читайте документацию:
An application-defined or library-defined callback function used with the SetWindowsHookEx function. The system calls this function whenever an application calls the GetMessage or PeekMessage function and there is a keyboard message (WM_KEYUP or WM_KEYDOWN) to be processed.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.09.2021, 00:14
Помогаю со студенческими работами здесь

Работа с текстовыми файлами. Узнать на какой номер было совершено больше всего звонков
Есть задача написать на с# программу: Имеется файл с расшифровкой счета за телфонные разговоры,(дата,номер телефона,кол-во минут). Узнать...

Определить в каком окне нажата кнопка
Есть класс: public Patients implements ActionListener в котором два конструктора: 1) public Patients(Administrator administrator); ...

Как определить, было ли событие в каком-либо компоненте?
Мне нужно определить было ли событие или нет? Например, меняли ли дату в DateTimePicker

как определить на каком имадже было вызвано попапменю
Всем привет, я пишу свою первую игру на делфи и возникла проблема при нажатии на постройку мышкой два для вызова попапменю у меня 3 пункта...

Как определить, в каком из ComboBox было выбрано значение
Здравствуйте. В Excel документе есть 4 выпадающих списка, все они связаны с одним и тем же макросом, как определить из какого списка пришел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru