|
Положить в буфер клавиатуры, C builder |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 15)
|
Jul 21 2016, 08:43
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Давно было, исползовал Код SendMessage(hwnd, WM_CHAR, ' ', 1L); Для клавиатурных сообщений посмотрите из списка WM_XXXX т.е. на окно hwnd отправлялось сообщение типа WM_CHAR с данными "пробел". В Вашем случае (возможно) сделать программу-фильтр в виде "сервиса", которая будет сидеть на компорте, преобразовывать в "точтонадо" и отсылать сообщения на основную программу.
|
|
|
|
|
Jul 21 2016, 09:21
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Цитата(toweroff @ Jul 21 2016, 11:50)  приложение должно быть любым - у кого сейчас фокус ввода, тот и принял эти символы. Нет фокуса - так и фиг с ними. Короче говоря - полный аналог клавиатуры нужен  Если задача "разовая", в стиле "сделать надежно и забыть". Я делал халтурку. В платформенных весах вышел из строя весовой контроллер, который работал в примитивном протоколе по RS232. Контроллер весов был подключен на COM PC, далее инф шла в 1С (через свой "драйвер", который понимал протокл сгорелого вес-контроллера). Купили новый контроллер, кажется Rinstrrum, со своим протоколом. Решение. В PC была воткнута 2-портовая плата RS232 NMOS. 2 потрта этой платы были включены "в разрыв" соединения нового вес-контроллера и PC. (получился такой себе "типа шлюз"). Программная поддержка сводилась к конвертации протокола нового вес-контроллера к протоколу "сгорелого", который понимала 1C. ps - А аппаратный интерфейс у китайского девайса какой - RS232 или USB ?
Сообщение отредактировал k155la3 - Jul 21 2016, 09:24
|
|
|
|
|
Jul 21 2016, 11:03
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(SlavaV @ Jul 21 2016, 12:01)  Я другого не понял, при чем сканер и кодировка.
Сканер считывает закодированную последовательность числовых данных и передает её на интерфейс, а ваше дело её уже интерпретировать.
Опыт автоматизации большой, но сканеры ни когда не подключал в разрыв клавиатуры (хотя все сканеры поддерживали такой тип подключения).
PS я к тому, что в разрыв клавиатуры сканер должен посылать скан коды символов, попробуйте подключить непосредственно к COM порту и посмотреть, что он посылает. сканер работает в одном из двух режимов - Keyboard HID или USB-COM в режиме клавиатуры вместо русских символов - полная хрень, поэтому нужно в режиме порта ловить то, что от него приходит, перекодировать в Win CP1251 и эмулировать клавиатурные нажатия Цитата(k155la3 @ Jul 21 2016, 12:21)  ps - А аппаратный интерфейс у китайского девайса какой - RS232 или USB ? USB работает в одном из двух режимов - выше указал
|
|
|
|
|
Jul 21 2016, 13:54
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Я не понял, что имеется ввиду под "фокус ввода". Это: 1 - в разрезе системы в целом ( любое открытое приложение, например Word или Notepad, при получении фокуса получает китай-QR вывод), или 2 - в разрезе Вашего приложения, Вашей разработки (несколько форм-диалогов, и ввод в них), или 3 - одно приложение не Вашей разработки (те без доступа к исх. коду) Ps - около года назад юзал функции из этой оперы, вот раздел Win32API, возможно Вам поможет. MSDN_KeyboardКод MapVirtualKey() - Translates (maps) a virtual-key code into a scan code or character value, or translates a scan code into a virtual-key code.
To specify a handle to the keyboard layout to use for translating the specified code, use the MapVirtualKeyEx function. MapVirtualKeyEx() - Maps a virtual-key code into a scan code or character value, or translates a scan code into a virtual-key code. The function translates the codes using the input language and an input locale identifier. SendInput() - Synthesizes keystrokes, mouse motions, and button clicks.
Сообщение отредактировал k155la3 - Jul 21 2016, 15:04
|
|
|
|
|
Jul 21 2016, 15:36
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(k155la3 @ Jul 21 2016, 16:54)  Я не понял, что имеется ввиду под "фокус ввода". Это: 1 - в разрезе системы в целом ( любое открытое приложение, например Word или Notepad, при получении фокуса получает китай-QR вывод), оно самое Цитата(k155la3 @ Jul 21 2016, 16:54)  раздел Win32API, возможно Вам поможет. спасибо, буду изучать Цитата(SlavaV @ Jul 21 2016, 16:38)  думаю тогда нужно менять программу формирования QR кодов BarTender - это данность. В любом случае, смартфон читает нормально то, что им напечатано
|
|
|
|
|
Jul 26 2016, 08:22
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(jcxz @ Jul 22 2016, 06:00)  Если "приложение должно быть любым", то никакие SendMessage, WM_CHAR, WM_KEYDOWN и т.п. не подойдут. Так как у разных приложений разный способ приёма событий клавиатуры. С одними приложениями будет работать, с другими - нет. Подойдёт BlockInput/SendInput - они работают с системным буфером событий мыши/клавы. Курите MSDN на этот счёт. спасибо, работает НО! (куда ж без него?  ) Переключать Верхний-нижний регистры я могу, а вот раскладку клавиатуры - нет Если пользоваться LoadKeyboardLayout, то раскладка переключается для приложения, которое и выполняет эту функцию, а не для того, у которого фокус в данный момент и, я так понимаю, напрямую влезть в буфер клавиатуры никак, только через генерацию системных событий нажатия/отпускания клавиши
|
|
|
|
|
Jul 26 2016, 12:18
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(toweroff @ Jul 26 2016, 14:22)  Переключать Верхний-нижний регистры я могу, а вот раскладку клавиатуры - нет Если пользоваться LoadKeyboardLayout, то раскладка переключается для приложения, которое и выполняет эту функцию, а не для того, у которого фокус в данный момент и, я так понимаю, напрямую влезть в буфер клавиатуры никак, только через генерацию системных событий нажатия/отпускания клавиши  Так и генерите соответствующую комбинацию нажатий переключения раскладки через этот же SendInput.
|
|
|
|
|
Jul 26 2016, 12:32
|
Знающий
   
Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842

|
Кмк с генерацией именно русских символов лучший вариант комбинация ALT+<код символа>. Например ALT+134 эквивалентно "Ж". https://ru.wikipedia.org/wiki/Alt-%D0%BA%D0%BE%D0%B4 Проблема в том что на линукс/макос способ ввода/коды другие, но судя по контексту билдера это не важно. ЗЫ А вообще смотрю на SendInput - там же вроде описана возможность напрямую слать юникод. Разве не работает?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|