Две USB клавиатуры в одном компе

Тема в разделе "WASM.ZEN", создана пользователем basil_str, 14 окт 2009.

  1. basil_str

    basil_str Василий

    Публикаций:
    0
    Регистрация:
    7 июл 2006
    Сообщения:
    11
    есть две USB клавиатуры, которые подключены к одной машине. На одной я работаю, а другая выполняет роль панели кодового замка на входной двери. Надо полностью перехватывать вторую клавиатуру так, чтобы код, который вводится, не появлялся в моих документах, но его можно было анализировать внешней программой, которая подает сигнал на открытие двери. Сама программа отработана и функционирует уже полтора года. Модифицировалась до сетевой версии, т.е. любой, сидящий в кабинете может открыть дверь не вставая с рабочего места (для гостей, не имеющих кода доступа). На данный момент роль "приемника" клавиатуры играет отдельная машина.... но ее надо будет отдать для других целей.
    А видеть в своих документах, как кто-то набирает код не совсем удобно. Почитал несколько статей по этому вопросу и понял, что мне самому не разобраться. Некоторые примеры работают только с PS/2 клавиатурами, а вся проблема в том, что подключены две USB клавиатуры.
    Хотелось, бы не остаться с это проблемой один на один :dntknw:
     
  2. reversecode

    reversecode Guest

    Публикаций:
    0
    а не пробовали просто два проводка в лпт порт вставить?
    зачем аж целую клавиатуру да и к томуже с которой нужно токо одна клавиша)
     
  3. basil_str

    basil_str Василий

    Публикаций:
    0
    Регистрация:
    7 июл 2006
    Сообщения:
    11
    Прошу прощения за недостаточное объяснение.
    На двери весит падовская клавиатура. Каждый работник имеет свой код доступа. Каждое введение кода регистрируется в лог-файл и посылается на клиентские машины (чтобы видеть кто зашел). По окончании рабочего дня (с временным запасом) все коды блокируются (за исключением некоторых) и включаются в начале рабочего дня.
    А если поставить одну кнопку для отрывания двери - то проще вообще дверь не закрывать :)
     
  4. reversecode

    reversecode Guest

    Публикаций:
    0
    не задумывались о том что на одной кнопочке например построена азбука морзе?)
     
  5. basil_str

    basil_str Василий

    Публикаций:
    0
    Регистрация:
    7 июл 2006
    Сообщения:
    11
    Это интересное предложение, но сотрудницам (особенно блондинкам - не в обиду им) трудно будет рассказать о точках и тире.....
    Так все же по сути вопроса.... будут предложения?
    надеюсь и верю, что решение есть....... при чем достаточно простое..... (мне под силу :) )
     
  6. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    НЕ проще смарт карты всем раздать, и вбить фото на каждую карту.
     
  7. basil_str

    basil_str Василий

    Публикаций:
    0
    Регистрация:
    7 июл 2006
    Сообщения:
    11
    Конечно проще...... а еще проще выдать всем ключи от входной двери или организовать дежурство у входа (типа дневального поставить), сетевые кабеля пустить на бельевые веревки, а из мониторов сделать подставки под цветы.
    Спасибо, что настроение подняли.........
     
  8. reversecode

    reversecode Guest

    Публикаций:
    0
    нужно писать драйвер фильтра для клавиатуры
    котроый будет аттачиться именно к нужной для вас клавиатуре и получать скан коды клавишь
    а потом писать программулину которая будет разбирать эти скан коды и производить какие то действия
     
  9. basil_str

    basil_str Василий

    Публикаций:
    0
    Регистрация:
    7 июл 2006
    Сообщения:
    11
    может кто подскажет, что делаю не так.
    Скачал пример ctrl2cap. Установил через ctrl2cap.exe /install - обещаная замена Caps Lock работает.
    Скачал исходники, откомпилил, прописал в реестре (путь прилагается в архиве с исходниками) залил sys файл куда надо - не работает. Бред какой-то
     
  10. basil_str

    basil_str Василий

    Публикаций:
    0
    Регистрация:
    7 июл 2006
    Сообщения:
    11
    разобрался...... почему не работает пример....... теперь все ок. Осталось отфильтровать результат работы разных клавиатур. Пока ступор.... жаль..... что нет того, кто мог бы помочь
     
  11. basil_str

    basil_str Василий

    Публикаций:
    0
    Регистрация:
    7 июл 2006
    Сообщения:
    11
    Все.... добил....
    Теперь по желанию могу блокировать (или не блокировать) любую из подключенных клавиатур
     
  12. satrau

    satrau Александр

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    229
    ну а где исходники и описание?
    а еще лучше статью написать, а то тема интересная, но плохо раскрыта.
     
  13. basil_str

    basil_str Василий

    Публикаций:
    0
    Регистрация:
    7 июл 2006
    Сообщения:
    11
    теперь осталось за малым..... послать код нажатой клавиши приложению. Пока юзаю поиск. Если кто сможет подсказать - буду рад. Исходники - это ctrl2cap. Как раз подходит для решения задачи
     
  14. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    SendMessage() ?
    То есть, ищешь хендл окна, которому хочешь послать код клавиши. Как нашел - посылаешь. Вообще были исходники WinSpy. Советую их посмотреть.
     
  15. basil_str

    basil_str Василий

    Публикаций:
    0
    Регистрация:
    7 июл 2006
    Сообщения:
    11
    а каким образом с уровня драйвера можно послать SendMessage ???
     
  16. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    basil_str
    Если с драйвер надо послать приложению - значит либо использовать всякие нечестные хитрости, либо переделывать архитектуру.
    Рассказываю как пишутся такие вещи (когда нужно _легальное_ взаимодействие).
    Делается софт (твоя программа) который работает с твоим драйвером посредством DEV IO CONTROL кодов, либо использует Shared Memory откуда считывает данные (раз в секунду, или чаще..). Тем самым приложение получает нужные сканкоды. Далее оно (приложение) ищет выступает в роли менеджера. Ищет окна и посылает им коды.
    Примерно так.
    Можно без приложения, но это гораздо не гуманнее ). Я имею ввиду APC в юзермод. там много подводных камней. Не советую.
     
  17. basil_str

    basil_str Василий

    Публикаций:
    0
    Регистрация:
    7 июл 2006
    Сообщения:
    11
    Все очень даже гуманно :)
    мой драйвер, который перехватывает все нажатия второй клавиатуры и не пускает в систему, путем замены MakeCode = 0
    и моя программа, обрабатывающая эти сканкоды, проверяет их и посылает на клиентские приложения сообщение по сети (типа, кто открыл дверь, или сигнализирует звуком и/или в трее если нажата кнопка звонка - в роли кнопки звонка выступает кнопка "*" и тому подобные полезные штучки. Можно даже придумать функцию "ВХОДИТ ШЕФ". Это возможно, т.к. у каждого сотрудника свой код открывания двери и софт пишу я)
    Но проблема у меня такого характера. Перерыл этот сайт и несколько других. Народ пишет что есть 2 пути решения вопроса разшаренной памяти
    1 - память, созданная приложением
    2 - память, созданная драйвером

    1-й вариант не рекомендуют по причине того, что возможности драйвера по доступу в память более широки
    что скажете по этому поводу?
    И как порекомендуете сделать? Буду признателен, если Вы в дальнейшем не откажете мне в помощи :)
     
  18. basil_str

    basil_str Василий

    Публикаций:
    0
    Регистрация:
    7 июл 2006
    Сообщения:
    11
    решил проблему, но очень криво (мне не нравиться)
    драйвер пишет коды клавиш в файл и блокирует вторую клавиатуру - юзермодовская программа их читает. Первая (основная) клавиатура работает как работала, ее коды в файл не заносятся. Вторая работает только для юзермодовской программы и не мешает пользователю в работе с документами