|
3 / 3 / 1
Регистрация: 06.07.2014
Сообщений: 145
|
|
Глобальный хук клавиатуры с целью изменить клавишу06.01.2019, 00:19. Показов 2551. Ответов 10
Метки нет (Все метки)
Здравствуйте!
Возможно ли с помощью глобального хука клавиатуры (SetWindowsHookEx, WH_KEYBOARD_LL) изменить получаемую им клавишу (при этом изменить так, чтобы до всех получателей дошла именно измененная версия этой клавиши)?
0
|
|
| 06.01.2019, 00:19 | |
|
Ответы с готовыми решениями:
10
Глобальный хук клавиатуры (windows) Глобальный хук клавиатуры Глобальный хук клавиатуры |
|
134 / 26 / 8
Регистрация: 09.02.2017
Сообщений: 175
|
||||||
| 06.01.2019, 15:26 | ||||||
|
То есть вы хотите, допустим, если пользователь нажал А при вводе, то вместо А отобразилась Б?
Добавлено через 11 минут Если да, то есть функция CallNextHookEx. При вызове этой функции: - HHOOK hhk просто игнорируется (передаете просто nullptr), - int nCode передаете сюда первый аргумент вашей callback-функции, - wParam - сюда передаете тип события клавиатуры (WM_KEYDOWN, WM_KEYUP), - lParam - сюда передаете объект структуры KBDLLHOOKSTRUCT указав нужную клавишу Дополнительно: https://msdn.microsoft.com/ru-... s.85).aspx Добавлено через 10 минут В вашей callback-функции пишите
Еще как вариант использовать функцию keybd_event
0
|
||||||
|
3 / 3 / 1
Регистрация: 06.07.2014
Сообщений: 145
|
||||||
| 06.01.2019, 17:06 [ТС] | ||||||
|
Верно, хочу, чтобы при вводе А отобразилось Б.
Так и делаю. Вот, сами смотрите. Но ничего при этом не работает.
0
|
||||||
|
134 / 26 / 8
Регистрация: 09.02.2017
Сообщений: 175
|
||||||
| 06.01.2019, 18:05 | ||||||
|
В структуре, которая хранит виртуальный код, есть еще скан-код. Думаю, что там нужно тоже заменить нажатую клавишу на нужную вам.
Добавлено через 1 минуту Попробуйте сделать не через CallNextHookEx, а через keybd_event Добавлено через 59 секунд Для того, чтобы получить скан-код используйте
Использовать keybd_event будет проще.
0
|
||||||
|
3 / 3 / 1
Регистрация: 06.07.2014
Сообщений: 145
|
|
| 06.01.2019, 18:45 [ТС] | |
|
Ну вот я заменил vkCode и scanCode. Не помогло.
А вот keybd_event мне не подойдёт ![]() Мне нужно решить эту проблему именно посредством аргументов Callback'a (изменив их и направив в CallNextHookEx).
0
|
|
|
134 / 26 / 8
Регистрация: 09.02.2017
Сообщений: 175
|
|||||||
| 06.01.2019, 19:19 | |||||||
0
|
|||||||
|
3 / 3 / 1
Регистрация: 06.07.2014
Сообщений: 145
|
|
| 06.01.2019, 20:16 [ТС] | |
|
Уверен.
Мне просто не нравится тот факт, что при нажатии нужной мне клавиши она мелькнёт в хуке два раз (первый раз от имени пользователя (даже несмотря на то, что она будет блокироваться), второй раз как симуляция).
0
|
|
|
134 / 26 / 8
Регистрация: 09.02.2017
Сообщений: 175
|
|
| 06.01.2019, 21:24 | |
|
Можно текущий код вашего обработчика?
0
|
|
|
3 / 3 / 1
Регистрация: 06.07.2014
Сообщений: 145
|
||||||
| 07.01.2019, 05:46 [ТС] | ||||||
|
Да, конечно.
0
|
||||||
|
134 / 26 / 8
Регистрация: 09.02.2017
Сообщений: 175
|
|
| 07.01.2019, 15:45 | |
|
Вам нужно менять клавиши на разные клавиши? То есть какое кол-во клавиш, которыми вы будете заменять нажатые клавиши? Или вы просто будете менять, допустим, z на x, а x на z и так со всеми клавишами?
Добавлено через 31 минуту Наверное, больше ничем помочь не могу( Вот дополнительные ссылки, посмотрите: http://www.cplusplus.com/forum/windows/7354/ https://stackoverflow.com/ques... -a-hookc-c Ссылки нашел по запросу " change pressed key in hook winapi ". Если найдете решение, отпишитесь. Удачи)
0
|
|
|
3 / 3 / 1
Регистрация: 06.07.2014
Сообщений: 145
|
|
| 07.01.2019, 20:05 [ТС] | |
|
Нужно просто изменить нажатую пользователем клавишу на другую
(то есть, кликнул на одну клавишу, а в итоге получилось, что он кликнул на другую). Окей ![]() Спасибо!
0
|
|
| 07.01.2019, 20:05 | |
|
Помогаю со студенческими работами здесь
11
KeyLogger (глобальный хук клавиатуры) KeyboardProc, глобальный хук клавиатуры, dll
На глобальный хук клавиатуры ругаются антивирусники Глобальный хук клавиатуры для системных приложений. Почему зависает? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|