Чтение HID-ввода, когда окно «не в фокусе» в Python

Я борюсь с проблемой в течение нескольких дней, и я не могу заставить ее работать. Я только что начал с python, и теперь я уже сталкиваюсь с самой большой проблемой, с которой мне придется столкнуться в этом проекте.

Вот ситуация: мне нужно создать программу, которая сканирует штрих-код. Сообщает об этом в онлайн-сервисе и печатает PDF-файл. Все это работает отлично, но я также хочу сканировать штрих-код, когда окно «не в фокусе». Поэтому я хочу, чтобы люди могли сканировать с помощью сканера штрих-кода, в то время как окно сведено к минимуму.

I'm running windows 8 and I'm working with python 3.3. The barcode scanner is a HID device and it presents itself as a keyboard. I already tried to convert this project to python 3.3, but it does not work. --> http://learn.adafruit.com/barcode-scanner/overview I end up with all kinds of errors, which I still not completly understand.

Сегодня я попытался использовать pywinusb, но у этого модуля, похоже, есть проблемы с поиском любого HID-устройства, потому что он также не может найти мою клавиатуру и мышь.

Возможно, это сложный вопрос, но, надеюсь, у кого-то есть опыт с этим, и он знает, как это сделать.

3

1 ответы

Если сканер штрих-кода представляет собой клавиатуру, разве вы не хотите, чтобы в основном ключевой журнал, который работает в фоновом режиме? Поиск, этот был одним из первых Google Результаты для "python keylogger" - согласно источнику, ему нужны pyWin32 и pyHook . Я удалил журнал, чтобы свести пример кода до минимума, просто поместите код обработки в OnKeyboardEvent . Я тестировал это, и он работает с моей установкой Python 2.7 в Windows 7, но модули должны быть совместимы с Python 3.3.

import pythoncom, pyHook, sys, logging

def OnKeyboardEvent(event):
    print "Key: ", chr(event.Ascii)
    logging.log(10,chr(event.Ascii))
    return True

hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
pythoncom.PumpMessages()
2
добавлено
Проблема с этим подходом заключается в том, что сканер отправит штрих-код для кейлоггера и приложения с фокусом.
добавлено автор Mark Ransom, источник
Эквивалентом pyhook в linux является evdev, что позволяет python «захватывать» эксклюзивный доступ к HID-устройству для сканера.
добавлено автор gatorback, источник
Если сканер действительно настроен на работу в качестве клавиатуры, вероятно, нет хорошего способа предотвратить это.
добавлено автор unbehagen, источник
Спасибо за ответ. К сожалению, похоже, что нет никакого решения для подключения определенного эмулятора клавиатуры. Это решение в порядке и гарантирует, что каждый раз, когда я хочу сканировать, я получаю вход в программу (и программу спереди), но я думаю, что мне нужно искать другой сканер с другим типом ввода (необработанные данные), чтобы сделайте так же тихо. Или есть ли какие-либо методы для захвата определенной клавиатуры?
добавлено автор Ecno92, источник
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

Про Windows
Про Windows
941 участник(ов)

Microsoft Windows и всё, что с этим связано. Список интересных групп и каналов: https://github.com/goq/telegram-list

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community