Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Клавиатура как в Досе. [D6, Win2k]


sniknik ©   (2002-11-21 22:51:00) 

Необходимо (мне) обрабатавать нажатие на клавиши, но сами они не нажимаются а эмулируются устройством в разрыв клавиатуры (сканер штрихкодов).
В досе все хорошо то что он посылает то получается, а вот в виндах проблема (по крайней мере для меня) получаю не те силволы :(. Посылается символ со скан кодом 2 (два), в дос так и принимается (по Readkey) в виндах вместо него сканкод 17 + сканкод 86, точно не помню но то же сочетание что дает Ctrl+b, вплоть до флагов (событие onKeyDown).

Вопросвозможно в виндах получить значение точнотакоеже какое дает в досе? И каким способом?

если в этом случае 2=Ctrl+b еще может прокатить за "фенечку" то в случае с 0 в расширенных кодах вообще нет значения (а оно мне оченно нужно), получается 0+81 в дос = 46 в виндах (а это точка! часто встречается)

заранее извиняюсь, если обсуждение затянется до завтра то завтра у меня инета не будет скорее всего :((.


sniknik   (2002-11-25 15:06:00) [1]

Андрей Ваганов (25.11.02 13:19)
вообще не способ. без разницы у какого компонента onKeyUp срабатывает.
попробуй к примеру получить нажатием на клавиши там значек кода 2 -


Андрей Ваганов   (2002-11-25 13:19:00) [2]

Есть вариант еспользовать TEdit(получишь то, что сканишь) далее используй по назначению. Edit можно замутить невидимым.

...тупо, но способ! :)


sniknik   (2002-11-25 12:43:00) [3]

Пробовал, при MapType = 0 возврашает теже скан коды что в LParam[16..23], в других случаях преобразует в те же значения. ну в смысле если мое значение -2- драйвером преобразуется в -Ctrl+b- то дальше они совершенно однозначны и при MapType = 1 оба преобразуются в -119-.
и потом очень много кодов нетранслируемых, возврашается 0, а у меня это нормальное значение. :-((


LordOfSilence   (2002-11-25 10:05:00) [4]

Delphi->Help->Windows SDK->MapVirtualKey()?


sniknik   (2002-11-23 13:36:00) [5]

Похоже не решается.
Пробовал через LParam (в хуке, в MSDN нашол что передается скан код 16-23 биты) но проблема осталась т.к. там именно клавиатурные коды, коды клавиш (ESC=1, F1=59 и т.д) тут значения тоже пересекаются.
Можно еще посмотреть в комбинации, но вряд ли (так можно подобрать только для под конкретный сканер универсальности не получится), нужно чтонибудь с самими сканерами делать :(. Либо опускатся до клавиатурного драйвера а это гораздо сложнее.


Наверх

Титульная страница Поиск, карта сайта Написать письмо