Автоматическое сканирование в сетевую папку с кнопки на МФУ
Добрый день.Очень давно была такая статья как реализовать автоматическое сканирование при нажатии кнопки на сканере, но то ли у меня руки кривые, то ли нежелание детально разбираться, но подвиг автора я повторить не смог. И всё же решил реализовать эту идею по нескольким причинам: — не отвлекать оператора за АРМ, к которому подключено МФУ; — ускорить процесс получения электронных копий за счет автоподатчика листов и двухстороннего сканирования.Итак, имеем: МФУ 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.exe12. Как и автор той статьи для сканирования я использовал 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» Возле МФУ повесили: