Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.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 Довольно хорошо себя зарекомендовала. Но чтоб все работала придется и драйвер ставит с этой либой. Добавлено Либа к слову очень проста в использовании, но нужно представлять как работает клавиатура на низком уровне в системе(всякие там буферы, очереди и остальное) иначе иногда получается трешь Но в целом с захватом устройства и его релизом проблем не возникает. В общем мне эта либа сразу понравилась, когда я ее поставил и написал тестовую демо версию. С помощью нее можно эмулировать нажатия любых клавиш реальной клавиатуры, мыши, или просто прослушка ввода(например можно запретить ввод определенных символов или нажатия определенных клавиш), можно даже изменять ввод. В общем думаю эта хрень решит твои проблемы с запасом. Добавлено Единственный совет, если будешь юзать ее, сразу в проге ставь условие на клавишу, которая будет релизит захват устройства. В противном случае придется тебе перезагружаться, так как к клавиатуре/мыши(смотря что захватишь) доступа ты больше не получишь, я так на первом этапе лоханулся |
Автор: 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 04.07.19, 20:22 |
Скрытый текст |
Автор: JoeUser 04.07.19, 20:35 |
Скрытый текст Для этого дела - вот высшая тема Для обхода всяких гардов/фростов используется режим PS/2. А анализ пикселей экрана дает вообще безграничные возможности. |
Автор: Wound 04.07.19, 21:24 |
Скрытый текст Цитата JoeUser @ Для этого дела - вот высшая тема Для обхода всяких гардов/фростов используется режим PS/2. А анализ пикселей экрана дает вообще безграничные возможности. Это для детей. Может на каких то сервах и работает. На том где я играл - от всех этих кликеров стоит защита, и все, которые я качал - ни один не работал. Пришлось вот самому писать юзая драйвер. Это был единственный способ на сколько я понял. Ну так у меня бот на рыбалку именно по пикселям и рыбачил. |