1 (изменено: HellKnight, 2019-02-23 13:25:41)

Тема: AHK: Windows CE отследить событие чтения штрих-кода

Всем ДД!
Прошу помощи, пишу скрипт для автоматизации работы на ТСД Intermec cn70 (в комплекте с собственным сканером) на Windows CE. Соответственно использую древнюю версию AutoHotKey (1.0.5, если не ошибаюсь).
Впрочем, ближе к делу: основная работа происходит в программе 1С через приложение Citrix, поэтому возможности отследить содержимое элементов GUI нет. При чтении штрих-кода его данные сразу передаются в TextBox базы, хотелось бы их параллельно отлавливать для скрипта, но я не смог понять, каким именно образом происходит ввод и как его отлавливать. Естественно, в первую очередь я проверял с #UseKeybdHook и keyHistory, но там этот ввод не отслеживается. Из этого я делаю вывод, что сканер работает не в разрыв клавиатуры, а передает данные через какой-то порт (на сколько я смог правильно изучить тему со сканерами).
Гуглинг не выручает, не смог даже найти API или SDK для этого устройства по работе со сканером. Я так понимаю, скорее всего прийдется работать с Windows APi напрямую через команды DLL/CallBack.
На крайний случай есть запасной план наколхозить невидимый GUI с TextBox'ом, который сначала будет принимать данные туда, а потом передавать системе через виртуальные клавиши, но что-то мне подсказывает, что такой вариант долго допиливать и собирать багрепорт из-за его "костыльности".
Прошу помочь, если у кого был опыт с такими задачами.

Добавлено: нашел настройки сканера, всё-таки похоже он работает в разрыв клавиатуры и имеет свой суффикс. Как отследить ввод с суффиксом? И разве его наличие влияет на отображение в  KeyHistory?

2

Re: AHK: Windows CE отследить событие чтения штрих-кода

HellKnight

Может что-то типа такого

Code:
Loop 10
{
Hotkey, % "$~" A_Index-1, BarCodeHandler, on
}


BarCodeHandler:
Accu .= SubStr(A_ThisHotkey, 0)
If Strlen(Accu) >= 9 && A_TimeSincePriorHotkey < 60  ;;; 9 это минимальное кол-во символов в штрихкоде
SetTimer, TheBigShebang, -60
If (A_TimeSincePriorHotkey > 100)
Accu := SubStr(A_ThisHotkey, 0)
return

TheBigShebang:
msgbox % Accu

3

Re: AHK: Windows CE отследить событие чтения штрих-кода

Я, правда весь инет облазили и этот вариант пробовал. Но в этом варианте используются хоткеи вида $~1 $~2 etc, но винда их обрабатывает как-то иначе и я не знаю какого вида след оставляет. Сейчас понял, что если сканер пишет куда угодно, даже в блокнот, то нужно искать команду, которая следит за вводом пользователя, даже если он скрыт. Нашел такую у ahk - Input. В понедельник буду тестировать, если что дельное выйдет, дам знать.