Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.02.2015
Сообщений: 13

Хук клавиатуры: не вызывается callback

09.12.2016, 12:35. Показов 673. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень простой код для отлавливания событий нажатия клавиш. Создаю хук, передаю callback функцию, отлаживаю. И ничего.
Вот сам код в Visual Studio (console app)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Server.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include "Server.h"
#include "Task.h"
 
HHOOK hKeyHook;
LRESULT CALLBACK FilterFunc(int nCode, WPARAM wParam, LPARAM lParam);
 
int _tmain(int argc, _TCHAR* argv[])
{
    hKeyHook = SetWindowsHookEx(
        WH_KEYBOARD,
        (HOOKPROC)&FilterFunc,
        NULL,
        GetCurrentThreadId()
        );
    if (hKeyHook == NULL)
    {
        std::cout << "SetWindowsHookEx failed, GLE=%d.\n" << GetLastError() << std::endl;
        return -1;
    }
 
    getchar();
    return 0;
}
 
LRESULT CALLBACK FilterFunc(int nCode, WPARAM wParam, LPARAM lParam)
{
    return CallNextHookEx(
        hKeyHook,
        nCode,
        wParam,
        lParam
        );
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.12.2016, 12:35
Ответы с готовыми решениями:

Хук клавиатуры
Нужно написать глобальный хук для клавиатуры. Сам хук у меня уже есть, но не могу никак проверить введено ли ключевое слово. Например, если...

Хук на низкоуровневый ввод с клавиатуры
C++ DLL существует структура, которая описывает состояние клавиш Shift и CapsLook (для учёта регистра символов), а так же содержит...

Глобальный хук клавиатуры (windows)
Как программно можно остледить нажатие клавиши, если активно другое окно? Поиском нашёл GetAsyncKeyState, но она не подходит, т.к. данный...

2
2 / 2 / 0
Регистрация: 25.09.2012
Сообщений: 148
10.12.2016, 15:03
надо проверять параметр nCode ..
0
0 / 0 / 0
Регистрация: 21.02.2015
Сообщений: 13
10.12.2016, 16:01  [ТС]
Перенес callback to dll чтоб хук был системным. Создал dll функцию "SetHook", которая должна устанавливать хук изнутри dll. Передаю в SetWindowsHookEx handle загружаемого екземпляра dll и NULL параметр ThreadId, чтоб сделать хук системным. Загрузил dll динамически в консольное приложение, вызвал SetHook. Дебаг показывает не NULL HHOOK переменную внутри dll, но нажатия клавиш ничего не вызывают как и раньше. Еще вопрос: должна ли эта dll быть загружена в каждый прцесс в сестеме, чтоб глобально отслеживать нажатия или система понимает, что нужно вызывать одну единственную коллбек функцию из единственного екземпляра dll.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.12.2016, 16:01
Помогаю со студенческими работами здесь

Глобальный хук клавиатуры с целью изменить клавишу
Здравствуйте! Возможно ли с помощью глобального хука клавиатуры (SetWindowsHookEx, WH_KEYBOARD_LL) изменить получаемую им клавишу (при...

Хук клавиатуры - как получить код нажатой клавиши
Господа делаю хук на клавиатуру,вроде бы и работает(при нажатии на клавишу показывает),но есть одно но !!! не могу получить код нажатой...

Хук клавиатуры - как отличать события WM_KEYDOWN и WM_KEYUP при зажатой ALT?
Сделал хук для клавиатуры, столкнулся с проблемой: при зажатой клавише ALT перестают генерироваться события WM_KEYDOWN или по крайней мере...

Хук для чтения с клавиатуры. Добавление по кодам клавиатуры
Есть вот такой хук для считывания клавиш globalKeyboardHook gkh = new globalKeyboardHook(); gkh.HookedKeys.Add(Keys.Q); ...

Хук клавиатуры
вот хороший клавиатурный хук, который я использую для отлова клавиши PrtSc(код ниже). При нажатии данной клавиши, как вы, наверное,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru