Возврвщаясь к ранее поставленному вопросу "Как, собственно??"...
Стояла задача передать штрихкод с QR сканера в клиента со следующими требованиями:
1 стандартный USB сканер без доп настроек и эмуляций - купил, воткнул, работаешь. На отдельном порту (сканер в "разрыв клавиатуры" не прокатит)
2 цифровой сканкод любой длины, без настройки префикса на сканере, стандартный суффикс - Enter
3 активация агента нотуса, принимающего скан, из любого окна\программы винды (чел работает в нескольких прогах одновременно)
4 никаких дополнительных телодвижений, типа, открыть базу\нажать кнопу\открыть форму и проч. просто нажал кнопу на сканере. если пискнул (т.е. прочёл) - всё случилось, чонада))
получилась вот такая штука, типа драйвер:
запуск без параметров - краткий хелп
с парамертами "файл базы", через пробел "Имя формы-агента"
открывает в базе указанную форму-агента, принимающего скан из клипборды винды (такам образом ShellExecute("Notes:///"&$sParam1&"/"&$sParam2&"?OpenForm"))
что там внутри:
детектит и показывает ТрейТип "отключился" "подключился" (оказалось нужно, всвязи с хреновыми разъёмами дешманских сканеров)))
детектит откуда пришли цифры и, если сканер, пишет в клипборду и по Энтеру гонит в нотус
особенности: цифры с главной клавы ремапит в Numpad, пришлось так сделать для автоопределения откуда инфа, поскольку vkey приорететней, чем info-keyboard (( по "NumberOfKeysTotal", стандартная клава отдаёт 264 символа, а почти все сканеры 101, вот так и определяем ( < 200, так захотелось)))
по нажатию кнопки - ремап в нумпад и детект, по отжатию - печать, если "не сканер", иначе - в клипборду
детект по скорости ввода не прокатил - профи с нумпада фигачут со скоростью сканера, оказывается)))
форма-агент - как стандартный "ВЕБ агент" (или xpage agent), ток в клиенте - открылась, всё обработала и тут же закрылась (в postopen), вкладка моргнёт канешна.
если нужен ток бэк, то вся обработка в Queryopen & continue = false и не моргнёт)
двухмесячная работа прошла без нареканий (регистрация прихода-ухода клиентов), все довольны, как слоны)
в конечном варианте вообще без оператора - клиенты сами тычут карточки прихода/ухода в щелку и всё регицца само)
ЗЫ тестилось на десятке 64
ЗЗЫ забрать из клипборды
Стояла задача передать штрихкод с QR сканера в клиента со следующими требованиями:
1 стандартный USB сканер без доп настроек и эмуляций - купил, воткнул, работаешь. На отдельном порту (сканер в "разрыв клавиатуры" не прокатит)
2 цифровой сканкод любой длины, без настройки префикса на сканере, стандартный суффикс - Enter
3 активация агента нотуса, принимающего скан, из любого окна\программы винды (чел работает в нескольких прогах одновременно)
4 никаких дополнительных телодвижений, типа, открыть базу\нажать кнопу\открыть форму и проч. просто нажал кнопу на сканере. если пискнул (т.е. прочёл) - всё случилось, чонада))
получилась вот такая штука, типа драйвер:
запуск без параметров - краткий хелп
с парамертами "файл базы", через пробел "Имя формы-агента"
открывает в базе указанную форму-агента, принимающего скан из клипборды винды (такам образом ShellExecute("Notes:///"&$sParam1&"/"&$sParam2&"?OpenForm"))
что там внутри:
детектит и показывает ТрейТип "отключился" "подключился" (оказалось нужно, всвязи с хреновыми разъёмами дешманских сканеров)))
детектит откуда пришли цифры и, если сканер, пишет в клипборду и по Энтеру гонит в нотус
особенности: цифры с главной клавы ремапит в Numpad, пришлось так сделать для автоопределения откуда инфа, поскольку vkey приорететней, чем info-keyboard (( по "NumberOfKeysTotal", стандартная клава отдаёт 264 символа, а почти все сканеры 101, вот так и определяем ( < 200, так захотелось)))
по нажатию кнопки - ремап в нумпад и детект, по отжатию - печать, если "не сканер", иначе - в клипборду
детект по скорости ввода не прокатил - профи с нумпада фигачут со скоростью сканера, оказывается)))
форма-агент - как стандартный "ВЕБ агент" (или xpage agent), ток в клиенте - открылась, всё обработала и тут же закрылась (в postopen), вкладка моргнёт канешна.
если нужен ток бэк, то вся обработка в Queryopen & continue = false и не моргнёт)
двухмесячная работа прошла без нареканий (регистрация прихода-ухода клиентов), все довольны, как слоны)
в конечном варианте вообще без оператора - клиенты сами тычут карточки прихода/ухода в щелку и всё регицца само)
ЗЫ тестилось на десятке 64
ЗЗЫ забрать из клипборды
Код:
Declare Function GetClipboardData Lib "user32"(Byval wFormat As Long) As String
Declare Function OpenClipboard Lib "user32"(Byval hwnd As Long) As Long
Declare Function EmptyClipboard Lib "user32"() As Long
Declare Function CloseClipboard Lib "user32"() As Long
Public Const CF_TEXT = 1
Function RetrieveClipboard () As String
Dim hClipMemory As Variant
Dim MyString As String
If OpenClipboard(0&) = 0 Then
Msgbox "Cannot open Clipboard. Another app. may have it open"
End If
Call OpenClipboard(0)
hClipMemory = GetClipboardData (CF_TEXT)
If Isnull(hClipMemory) Then
Msgbox "Could not allocate memory"
Exit Function
End If
Call closeclipboard
RetrieveClipboard = hClipMemory
End Function
Dim clip As String, code As String
clip = RetrieveClipboard
Вложения
Последнее редактирование: