есть две USB клавиатуры, которые подключены к одной машине. На одной я работаю, а другая выполняет роль панели кодового замка на входной двери. Надо полностью перехватывать вторую клавиатуру так, чтобы код, который вводится, не появлялся в моих документах, но его можно было анализировать внешней программой, которая подает сигнал на открытие двери. Сама программа отработана и функционирует уже полтора года. Модифицировалась до сетевой версии, т.е. любой, сидящий в кабинете может открыть дверь не вставая с рабочего места (для гостей, не имеющих кода доступа). На данный момент роль "приемника" клавиатуры играет отдельная машина.... но ее надо будет отдать для других целей. А видеть в своих документах, как кто-то набирает код не совсем удобно. Почитал несколько статей по этому вопросу и понял, что мне самому не разобраться. Некоторые примеры работают только с PS/2 клавиатурами, а вся проблема в том, что подключены две USB клавиатуры. Хотелось, бы не остаться с это проблемой один на один
а не пробовали просто два проводка в лпт порт вставить? зачем аж целую клавиатуру да и к томуже с которой нужно токо одна клавиша)
Прошу прощения за недостаточное объяснение. На двери весит падовская клавиатура. Каждый работник имеет свой код доступа. Каждое введение кода регистрируется в лог-файл и посылается на клиентские машины (чтобы видеть кто зашел). По окончании рабочего дня (с временным запасом) все коды блокируются (за исключением некоторых) и включаются в начале рабочего дня. А если поставить одну кнопку для отрывания двери - то проще вообще дверь не закрывать
Это интересное предложение, но сотрудницам (особенно блондинкам - не в обиду им) трудно будет рассказать о точках и тире..... Так все же по сути вопроса.... будут предложения? надеюсь и верю, что решение есть....... при чем достаточно простое..... (мне под силу )
Конечно проще...... а еще проще выдать всем ключи от входной двери или организовать дежурство у входа (типа дневального поставить), сетевые кабеля пустить на бельевые веревки, а из мониторов сделать подставки под цветы. Спасибо, что настроение подняли.........
нужно писать драйвер фильтра для клавиатуры котроый будет аттачиться именно к нужной для вас клавиатуре и получать скан коды клавишь а потом писать программулину которая будет разбирать эти скан коды и производить какие то действия
может кто подскажет, что делаю не так. Скачал пример ctrl2cap. Установил через ctrl2cap.exe /install - обещаная замена Caps Lock работает. Скачал исходники, откомпилил, прописал в реестре (путь прилагается в архиве с исходниками) залил sys файл куда надо - не работает. Бред какой-то
разобрался...... почему не работает пример....... теперь все ок. Осталось отфильтровать результат работы разных клавиатур. Пока ступор.... жаль..... что нет того, кто мог бы помочь
Все.... добил.... Теперь по желанию могу блокировать (или не блокировать) любую из подключенных клавиатур
теперь осталось за малым..... послать код нажатой клавиши приложению. Пока юзаю поиск. Если кто сможет подсказать - буду рад. Исходники - это ctrl2cap. Как раз подходит для решения задачи
SendMessage() ? То есть, ищешь хендл окна, которому хочешь послать код клавиши. Как нашел - посылаешь. Вообще были исходники WinSpy. Советую их посмотреть.
basil_str Если с драйвер надо послать приложению - значит либо использовать всякие нечестные хитрости, либо переделывать архитектуру. Рассказываю как пишутся такие вещи (когда нужно _легальное_ взаимодействие). Делается софт (твоя программа) который работает с твоим драйвером посредством DEV IO CONTROL кодов, либо использует Shared Memory откуда считывает данные (раз в секунду, или чаще..). Тем самым приложение получает нужные сканкоды. Далее оно (приложение) ищет выступает в роли менеджера. Ищет окна и посылает им коды. Примерно так. Можно без приложения, но это гораздо не гуманнее ). Я имею ввиду APC в юзермод. там много подводных камней. Не советую.
Все очень даже гуманно мой драйвер, который перехватывает все нажатия второй клавиатуры и не пускает в систему, путем замены MakeCode = 0 и моя программа, обрабатывающая эти сканкоды, проверяет их и посылает на клиентские приложения сообщение по сети (типа, кто открыл дверь, или сигнализирует звуком и/или в трее если нажата кнопка звонка - в роли кнопки звонка выступает кнопка "*" и тому подобные полезные штучки. Можно даже придумать функцию "ВХОДИТ ШЕФ". Это возможно, т.к. у каждого сотрудника свой код открывания двери и софт пишу я) Но проблема у меня такого характера. Перерыл этот сайт и несколько других. Народ пишет что есть 2 пути решения вопроса разшаренной памяти 1 - память, созданная приложением 2 - память, созданная драйвером 1-й вариант не рекомендуют по причине того, что возможности драйвера по доступу в память более широки что скажете по этому поводу? И как порекомендуете сделать? Буду признателен, если Вы в дальнейшем не откажете мне в помощи
решил проблему, но очень криво (мне не нравиться) драйвер пишет коды клавиш в файл и блокирует вторую клавиатуру - юзермодовская программа их читает. Первая (основная) клавиатура работает как работала, ее коды в файл не заносятся. Вторая работает только для юзермодовской программы и не мешает пользователю в работе с документами