перехват клавиатуры

Простейшие вопросы в области инженерной разработки

перехват клавиатуры

Postby Artem.spb on 21 Aug 2017, 10:08

Совсем не чайниковский вопрос, но в другие темы тоже не подходит.
На NI форуме начался какой-то бред, может у меня с английским что-то не то, так что попробую по-русски.
Задача: перехватить клавиатурный ввод в параллельном потоке.

Если надо подробности, то есть гравировальный станок, его родной софт трогать нельзя.
К станку подключён экран (=мышка) и сканер штрих-кодов (=клавиатура). Последний работает в режиме эмуляции клавы, т.е. он именно клавиатура, а не что-то в ком-порте.
Оператор ставит изделие в установку, сканирует штрих-код (он высвечивается на экране), нажимает кнопку «поехали» и всё.
Хочется перед запуском гравирования убедиться, что этот код есть в базе, т.е. изделие прошло тестирование. Если нет, вывести предупреждение, что гравировать не стоит. Каких-то супер блокировок не требуется.
Вариант распознавания символов с экрана возможен, но пока рассматривается как лёгкое извращение, с которым не стоит связываться (да и доп лицензии на вижн денег стоят).

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

scan1.png

scan2.png


Может, кто знает метод получения уникальных символов?
Artem.spb
expert
expert
 
Posts: 1252
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 218
CLD hardware I/O VIP freelance

Re: перехват клавиатуры

Postby Vitekkz88 on 21 Aug 2017, 12:27

Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 953
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP

Re: перехват клавиатуры

Postby Artem.spb on 21 Aug 2017, 12:36

Artem.spb
expert
expert
 
Posts: 1252
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 218
CLD hardware I/O VIP freelance

Re: перехват клавиатуры

Postby Blackman on 21 Aug 2017, 12:39

Поставьте пробник на выходе VI. Нажмите и отпустите клавишу. Будет выводится пустой массив. Т.е. пустой массив является разделителем символов. Отсюда следует что надо иметь скорость ввода гарантирующий повторной ввод символов и не надо их накапливать. Хотя это относится к реальной клаве. Может быть сканер работает по другому?
Blackman
leader
leader
 
Posts: 695
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 174

Re: перехват клавиатуры

Postby Vitekkz88 on 21 Aug 2017, 13:02

Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
leader
leader
 
Posts: 953
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 258
hardware I/O VIP

Re: перехват клавиатуры

Postby Artem.spb on 21 Aug 2017, 13:21

Artem.spb
expert
expert
 
Posts: 1252
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 218
CLD hardware I/O VIP freelance

Re: перехват клавиатуры

Postby dadreamer on 21 Aug 2017, 14:05

Нужно поставить хук на клаву, но для этого придётся написать небольшую DLL'ку.




Ну и так далее, эта тема довольно подробно разжёвана на многих ресурсах.
User avatar
dadreamer
doctor
doctor
 
Posts: 2956
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2017
Karma: 721
I/O VIP vision internet

Re: перехват клавиатуры

Postby Artem.spb on 21 Aug 2017, 14:39

Artem.spb
expert
expert
 
Posts: 1252
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 218
CLD hardware I/O VIP freelance

Re: перехват клавиатуры

Postby FireFly on 29 Aug 2017, 10:30

Можно перевести сканер в режим COM-порта.
Своим софтом работать со сканером по COM-порту.
Если номер ОК - эмулировать печать номера клавиатурой.

Мне кажется такой вариант надежнее и даже немного проще.
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
User avatar
FireFly
expert
expert
 
Posts: 1314
Joined: 25 Apr 2009, 08:58
Medals: 2
Activity (1) Black (1)
LabVIEW Version: 2014
Karma: 169


Return to Для чайников

Who is online

Users browsing this forum: Baidu, Google and 10 guests

cron