Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > C/C++: Системное программирование и WinAPI > Захват USB-клавиатуры


Автор: JoeUser 04.07.19, 06:33
Всем привет!

Собственно, интересует сабж. Ситуация следующая. Есть устройство, которое винда определяет как устройство ввода "а-ля клавиатура". Все параметры этого устройства в программе просмотра подключенных USB-устройств я вижу.

Задача следующая: при запуске моей проги, моя прога должна это весь вывод из этого USB-устройства захватить на себя. Иными словами, даже если будет активна другая программа, и будет иметь активный фокус, к примеру блокнот, вывод из указанного выше USB-устройства должен идти в мою программу, которая болтается в фоне.

Как это сделать?

Автор: Gonarh 04.07.19, 07:32
Драйвер-фильтр для юсб, пишешь сам.

Добавлено
Минимальный манул тут

Автор: Wound 04.07.19, 07:44
Цитата JoeUser @
Задача следующая: при запуске моей проги, моя прога должна это весь вывод из этого USB-устройства захватить на себя. Иными словами, даже если будет активна другая программа, и будет иметь активный фокус, к примеру блокнот, вывод из указанного выше USB-устройства должен идти в мою программу, которая болтается в фоне.

Как это сделать?

Писал бота для рыбалки. Делал именно то, что тебе нужно. Полностью перехватывал указанные устройства ввода вывода, USB клавиатуру/мышь. Конкретно для перехвата юзал библиотеку сторонюю, могу даже проект скинуть если интересно(если найду).
Юзал вот эту либу(вроде как): http://www.oblita.com/interception.html
Довольно хорошо себя зарекомендовала. Но чтоб все работала придется и драйвер ставит с этой либой.

Добавлено
Либа к слову очень проста в использовании, но нужно представлять как работает клавиатура на низком уровне в системе(всякие там буферы, очереди и остальное) иначе иногда получается трешь :crazy:
Но в целом с захватом устройства и его релизом проблем не возникает. В общем мне эта либа сразу понравилась, когда я ее поставил и написал тестовую демо версию.
С помощью нее можно эмулировать нажатия любых клавиш реальной клавиатуры, мыши, или просто прослушка ввода(например можно запретить ввод определенных символов или нажатия определенных клавиш), можно даже изменять ввод. В общем думаю эта хрень решит твои проблемы с запасом.

Добавлено
Единственный совет, если будешь юзать ее, сразу в проге ставь условие на клавишу, которая будет релизит захват устройства. В противном случае придется тебе перезагружаться, так как к клавиатуре/мыши(смотря что захватишь) доступа ты больше не получишь, я так на первом этапе лоханулся :D

Автор: JoeUser 04.07.19, 08:08
Wound, супер!!!
Буду благодарен, если скинешь свой проект.
Будет и легче разобраться, а возможно и куски использовать.

Автор: Wound 04.07.19, 08:10
Хорошо дома поищу, вечером скину.

Автор: JoeUser 04.07.19, 08:10
Gonarh, сенкс!
Гляну обязательно.
В принципе это тоже интересно, т.к. не хочется чтобы устройство вообще что-то передавало в винду, если моя прога не запущена.
А тут только драйвер поможет, имхо.

Автор: Wound 04.07.19, 19:31
Бота с рыбалкой не нашел, вернее нашел недоделанный на MFC пример, хотя вроде под консоль был рабочий, видимо он остался на ноуте, а ноуту плохо, из за того что зарядный кабель сломался.
Но зато нашел подобный пример с крафтом сосок, та же библа используется, автоматически нажимаются клавиши. Архив приаттачиваю.
interception_example.zip (, : 207)

Добавлено
interception.h и interception.lib вместе с dll можешь взять по ссылке выше. Чтоб пример скомпилировался там пути подправить надо будет.
Смысл работы проги следующий(делался для игры, поэтому сходу можешь не въехать как работает):
1) Первые два параметра - по сути количество автоматических кликов мышкой(это типа крафт, наводишь мышкой в определенное место и прога за тебя начнет автоматически нажимать Л.Кн. мыши и клавишу на клавиатуре, допустим там 3000 раз), когда крафтишь кончается мана, поэтому через опеределенный промежуток времени нужно нажать кнопку на клавиатуре чтоб выскочило окно с пополнением маны. Поэтому там нажимается клавиша F1. После чего снова автоматом нажимаются клавиши на маусе.
Досрочное прекращение крафта - клавиша ESC.
Чтоб начался процесс перехвата - надо задать параметры и нажать клавишу F5, после чего начнется мышкотыкание с кнопконажимательством. Я бы на твоем месте там изменил клавиши на буквенные, и задал фокус в блокнот например. Пример этот не сложный. Думаю разберешься. Если что обращайся подскажу.

Добавлено
Ну и естественно нужно установить сам драйвер библиотеки в систему. Иначе ничего работать не будет. Как установить - читай по ссылке на библиотеку выше. Там же есть и примеры + исходники + как поставить.

Автор: JoeUser 04.07.19, 20:19
Wound, пасип!!!
Завтра, если на работе не напрягут, сяду поразбираюсь.
Скрытый текст
Цитата Wound @
пример с крафтом сосок

Линейка? :)

Автор: Wound 04.07.19, 20:22
Скрытый текст
Цитата JoeUser @
Линейка? :)

Ага.

Автор: JoeUser 04.07.19, 20:35
Скрытый текст
Цитата Wound @
Цитата JoeUser @
Линейка? :)

Ага.

Для этого дела - вот высшая тема :lol:
Для обхода всяких гардов/фростов используется режим PS/2.
А анализ пикселей экрана дает вообще безграничные возможности.

Автор: Wound 04.07.19, 21:24
Скрытый текст
Цитата JoeUser @
Для этого дела - вот высшая тема :lol:
Для обхода всяких гардов/фростов используется режим PS/2.
А анализ пикселей экрана дает вообще безграничные возможности.

Это для детей. Может на каких то сервах и работает. На том где я играл - от всех этих кликеров стоит защита, и все, которые я качал - ни один не работал. Пришлось вот самому писать юзая драйвер. Это был единственный способ на сколько я понял.

Цитата JoeUser @
А анализ пикселей экрана дает вообще безграничные возможности.

Ну так у меня бот на рыбалку именно по пикселям и рыбачил.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)