За основу был взят проект с сайта Codeproject и переделан под свои нужды. Сделано всё на основе библиотеки Ozeki Camera SDK. Как пользоваться библиотекой написано здесь. По заявлению авторов библиотеки сканируются и распознаются следующие форматы кодов:
1D: CODABAR, CODE 39, CODE 93, CODE 128, EAN 8, EAN 13, ITF, MSI, PLESSEY, RSS 14, RSS EXPANDED, UPC-A, UPC-E,
2D: AZTEC, DATA MATRIX, MAXI CODE, PDF417, QR CODE
Не знаю как штрих-коды, но QR распознает более-менее нормально. Скорость распознавания во многом зависит от освещения и от качества картинки вебкамеры, а также и от точки фокуса (особенно критично для штрих-кодов). Если носитель кода глянцевый, желательно чтобы не бликовал. Вобщем нужно наловчиться.
Как пользоваться:
Вариант 1: Если программу просто запустить, она будет просто сканировать коды и отображать результат в своем окне.
Вариант 2: Если при запуске в качестве параметра указать имя файла результата (например так: "QRWebCam.exe result.txt"), она распознает код, автоматически закроется, а результат запишет в указанный файл. Но к сожалению 1С-ная функция ЗапуститьПриложение() не умеет запускать программы с параметрами (можно конечно через bat-файл, но лично меня смущает появляющееся черное консольное окно), поэтому был придуман вариант 3.
Вариант 3: В каталоге программы можно создать одноименный ini-файл (QRWebCam.ini) и прописать в нём путь и имя выходного файла - будет работать аналогично варианту 2, но запускать можно без параметров, результат сканирования будет помещен в прописанный файл. Пример содержимого ini-файла:
d:\QRWebcam\result.txt
Для использования в 1С можно написать такой код:
ЗапуститьПриложение("d:\QRWebcam\QRWebCam.exe", "d:\QRWebcam\", Истина);
Т = Новый ТекстовыйДокумент;
Т.Прочитать("d:\QRWebcam\result.txt",КодировкаТекста.UTF8);
QRКод = Т.ПолучитьСтроку(1);
Если вдруг кто захочет перекомпилить под себя, исходник прилагается.