Как стать автором
Обновить

Автоматическое сканирование в сетевую папку с кнопки на МФУ

Время на прочтение4 мин
Количество просмотров32K
Добрый день.
Очень давно была такая статья как реализовать автоматическое сканирование при нажатии кнопки на сканере, но то ли у меня руки кривые, то ли нежелание детально разбираться, но подвиг автора я повторить не смог. И всё же решил реализовать эту идею по нескольким причинам:
— не отвлекать оператора за АРМ, к которому подключено МФУ;
— ускорить процесс получения электронных копий за счет автоподатчика листов и двухстороннего сканирования.

Итак, имеем: МФУ Canon imageRUNNER 1133А подключено по USB к компьютеру под управлением ОС Windows 7. Сеть имеет доменное управление, есть отдельный компьютер с файлохранилищем.

1. В вышеназванной статье ищем ссылку на программу автора
Замечание: Первоначально у автора было задействовано 3 кнопки (по файлу config.ini и scan.js это видно). Поэтому в исходниках со строки 31 файла scan.js добавляем еще одно условие. Вот кусок кода, который у меня получился:
switch (param2) //Запускаем приложения при получении нужных параметров
  {
    case get_ini_value("config.ini", "scan1_flag"):
      wsh = new ActiveXObject("WScript.Shell");
      wsh.Run(get_ini_value("config.ini", "scan1_app"),6);
      break;
    case get_ini_value("config.ini", "scan2_flag"):
      wsh = new ActiveXObject("WScript.Shell");
      wsh.Run(get_ini_value("config.ini", "scan2_app"),6);
      break;
    case get_ini_value("config.ini", "scan3_flag"):
      wsh = new ActiveXObject("WScript.Shell");
      wsh.Run(get_ini_value("config.ini", "scan3_app"),6);
      break;
	case get_ini_value("config.ini", "scan4_flag"):
      wsh = new ActiveXObject("WScript.Shell");
      wsh.Run(get_ini_value("config.ini", "scan4_app"),6);
      break;
    default:
      write_log(get_ini_value("config.ini", "logfile"), "No valid parameters\n" + objArgs);
  }

Как компилировать у автора написано.

2. Логинимся администратором и распаковываем архив в C:\ProgramData\scan и даем полный доступ группе Domain Users (или какой-то другой) на эту директорию. В принципе из архива нужны только два файла config.ini и scan.js.

3. В консоле администратора выполняем
C:\ProgramData\scan\scan -reg

4. Перезагружаем ПК

5. Логинимся администратором и запускаем regedit. Исправляем в реестре путь к scan.exe на полный в следующих местах:
— В разделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\AutoplayHandlers\Handlers\WIA_{FC36F676-4675-4CC9-B705-3AC86F456214} ключ InitCmdline
— В разделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\StillImage\Registered Applications ключ Value
— 5.3 в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StillImage\Events\STIProxyEvent\{FC36F676-4675-4CC9-B705-3AC86F456214} ключ Cmdline

Например было scan.exe
А станет c:\ProgramData\scan\scan.exe

Как прописать свою программу для сканирования честно подглядел у подглядел в блоге iCopy

6. Перезагружаем ПК, логинемся администратором

7. Открываем «Устройства и Принтеры», правой клавишей мыши на МФУ, выбираем «Свойства сканирования», в открывшемся окне переходим на вкладку «События», где выбираем на каждое событие действие запустить ScanApp

8. В файле конфига c:\ProgramData\scan\config.ini опицию debugflag исправляем на true, чтоб велся лог-файл

9. Переводим МФУ в режим сканирования, выбираем опцию, записываем ID_Event для каждого профиля сканирования

10. Исправляем config.ini под свои нужды
Вот мой:
[debug]
debugflag=true
logfile=debug.log

[flags]
scan1_flag=/StiEvent:{2A6CE1DC-C3E2-4ECF-8540-41F9197DDB86};
scan2_flag=/StiEvent:{030E4709-6263-4278-93B4-33C15644841A};
scan3_flag=/StiEvent:{6336E0AE-81A7-4B8A-9A63-156788D9AF9C};
scan4_flag=/StiEvent:{2BC72F52-CE02-42BC-A843-609A9FCEA15D};

[applications]
scan1_app=c:\ProgramData\scan\scan_col.cmd
scan2_app=c:\ProgramData\scan\scan_bw.cmd
scan3_app=c:\ProgramData\scan\scan_bw_150.cmd
scan4_app=rem резерв

11. Еще нам понадобится утилита, которая позволит запускать полностью скрытые консольные процессы hidcon. Взять можно здесь. Их архива достаем hidcon-x64.exe или hidcon-x32.exe, копируем в C:\ProgramData\scan и для краткости переименовываем в hidcon.exe

12. Как и автор той статьи для сканирования я использовал iCopy. Архив с программой распаковал в C:\ProgramData\scan. Рекомендую перед сканированием запустить программу с графическим интерфейсом и отладить требуемые режимы.

13. Листинг каждого cmd-файла для определенного действия (кодировка Windows 1251)
rem scan_col.cmd
rem меняем кодировку 
chcp 1251
rem получаем дату_время
set now=%TIME:~0,-3%
set now=%now::=%
set now=%now: =0%
set now=%DATE:~-4%%DATE:~3,2%%DATE:~0,2%_%now%
rem сетевая шара
set dt=\\server\scan
c:\ProgramData\scan\hidcon.exe "c:\ProgramData\scan\iCopy.exe /file /path %dt%\%now%.jpg /adf /duplex /r 300"

rem scan_bw.cmd
rem меняем кодировку 
chcp 1251
rem получаем дату_время
set now=%TIME:~0,-3%
set now=%now::=%
set now=%now: =0%
set now=%DATE:~-4%%DATE:~3,2%%DATE:~0,2%_%now%
rem сетевая шара
set dt=\\server\scan
c:\ProgramData\scan\hidcon.exe "c:\ProgramData\scan\iCopy.exe /file /path %dt%\%now%.jpg /adf /duplex /gray /r 300"

rem scan_bw_150.cmd
rem меняем кодировку 
chcp 1251
rem получаем дату_время
set now=%TIME:~0,-3%
set now=%now::=%
set now=%now: =0%
set now=%DATE:~-4%%DATE:~3,2%%DATE:~0,2%_%now%
rem сетевая шара
set dt=\\server\scan
c:\ProgramData\scan\hidcon.exe "c:\ProgramData\scan\iCopy.exe /file /path %dt%\%now%.jpg /adf /duplex /gray /r 150"

14. На той машине, которая предоставляет шару для сканирования (в моём случае ОС Windows), в планировщик добавляем такое задание: каждый день в 21:00 выполнять scan_move.cmd (кодировка OEM 866)
rem scan_move.cmd
rem сетевая шара, вид со стороны файлохранилища
set dt=d:\scan
rem файлы перемещаем в Архив
move /y %dt%\*.jpg %dt%\Архив
rem в Архиве файлы старше 7-ми дней удаляем
forfiles /p %dt%\Архив /d -7 /c "CMD /c del /Q @FILE"

Возле МФУ повесили:


UPD 5.05.2014: Обнаружилось неудобство — сканирование не происходит, если никто не залогинется локально.
Теги:
Хабы:
+7
Комментарии10

Публикации

Изменить настройки темы

Истории

Работа

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн