Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Перехват нажатий клавиш c Barcode Harvester / 10 сообщений из 10, страница 1 из 1
24.07.2018, 12:31
    #39678196
aidynchik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват нажатий клавиш c Barcode Harvester
Всем привет!
Есть такая интересная программа "Barcode Harvester", с ее помощью можно проводить инвентаризацию товаров.
На смартфоне нащелкал штрихкоды, затем этот список со штрихкодами отсылается в программу "Barcode Harvester" на комптьютер, а уже оттуда, с помощью пункта "Клавиатурный вывод (имитирует работу физического сканера штрихкода)" можно все выгрузить в другую программу.
Так вот не могу перехватить этот самый "Клавиатурный вывод", если открыть блокнот и выводить туда, то "Barcode Harvester" тупо выкидывает туда штрихкоды, по одному в строчку, в принципе как и любой другой USB-сканер штрихкода.

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

Пробую через TApplicationEvents.OnMessage, но не могу понять как привести в человеческий вид, то, что мне прислали.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if (Msg.message = WM_KEYDOWN) or (Msg.message = WM_CHAR) then begin
    if Msg.wParam <> 13 then
      KeysBuffer := KeysBuffer + IntToStr(Msg.wParam)
    else begin
      memo1.Lines.Add(KeysBuffer);
    end;
  end;
end;



на выходе получается что попало

Код: pascal
1.
23149231552314823153231552315523148231512314823153231482315323154



это результат штрихкода 1705770305056
...
Рейтинг: 0 / 0
24.07.2018, 12:37
    #39678200
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват нажатий клавиш c Barcode Harvester
aidynchik,

вот здесь 17597573 есть пример кода для работы со штрихкодами... WM_CHAR для отлова данных, WM_KEYDOWN для отлова нажатия enter.
...
Рейтинг: 0 / 0
24.07.2018, 17:15
    #39678438
aidynchik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват нажатий клавиш c Barcode Harvester
JaDi,

спасибо, я его и юзал, оказалось ошибся в одном месте
...
Рейтинг: 0 / 0
25.07.2018, 07:53
    #39678683
aidynchik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват нажатий клавиш c Barcode Harvester
JaDi,

у меня подцеплен манифест к приложению. Так вот на windows 7 - работает все идеально, а на windows 10 - тупо ничего не перехватывается, если requestedExecutionLevel стоит "requireAdministrator". Просто не реагирует. Даже в мемо и едиты не вставляет.
Как только поставить "asInvoker" и сбилдить - то реакция идет.
Не сталкивались с таким? Что делать?
...
Рейтинг: 0 / 0
25.07.2018, 08:41
    #39678703
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват нажатий клавиш c Barcode Harvester
aidynchik,

сталкивался -- если приложение запущено под админом, то из обычного нельзя было, например, перетащить ссылки в это окно. Но в деталях не разбирался, как с этим бороться.
...
Рейтинг: 0 / 0
25.07.2018, 10:39
    #39678769
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват нажатий клавиш c Barcode Harvester
JaDiaidynchik,

сталкивался -- если приложение запущено под админом, то из обычного нельзя было, например, перетащить ссылки в это окно. Но в деталях не разбирался, как с этим бороться.
Там суть в том, что изначальная идея UAC - это то что даже Администратор является обычным пользователем, а при запуске "от администратора" приложение запускается от другого пользователя, даже если у него то же самое имя. Раньше это было хорошо видно на примере сетевых дисков. Видимо в Windows 10 они подкрутили уровень изоляции этих пользователей друг от друга, так что такое поведение - это фича, а не баг. Соответственно надо решать проблему передачи этих данных не только в другое приложение, но и запущенное от имени другого пользователя.

Как вариант: сделать какой-нибудь прокси-процесс, который будет запускаться "AsInvoker", принимать данные от сканера и передавать их в нужное приложение через какие-нибудь Named Pipes или ещё как.
Или запускать сам Barcode Harvester от имени администратора (несекурно!).
...
Рейтинг: 0 / 0
25.07.2018, 10:42
    #39678772
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват нажатий клавиш c Barcode Harvester
Но вообще, приложения выполняющиеся в повышенными правами (если это не службы, и то не всегда) - зло. Обычное пользовательское приложение должно работать под обычной учёткой.

Иначе получаются истории вроде недавней, с "петей", который распространялся через приложение, которое для своей работы обязательно требовало права администратора, причём доменного...
...
Рейтинг: 0 / 0
25.07.2018, 12:00
    #39678818
aidynchik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват нажатий клавиш c Barcode Harvester
alekcvpИли запускать сам Barcode Harvester от имени администратора (несекурно!).
ну да, придется так.
Спасибо!
...
Рейтинг: 0 / 0
25.07.2018, 12:21
    #39678837
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват нажатий клавиш c Barcode Harvester
alekcvp,

о безопасности вообще мало кто задумывается, надеясь на 'авось'. до тех пор, пока это 'петей' не заканчивается, или еще чем-то подобным.
...
Рейтинг: 0 / 0
25.07.2018, 12:21
    #39678838
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват нажатий клавиш c Barcode Harvester
aidynchik,

тебя предупредили :)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Перехват нажатий клавиш c Barcode Harvester / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]