Добрый день.
Очень давно была такая статья как реализовать автоматическое сканирование при нажатии кнопки на сканере, но то ли у меня руки кривые, то ли нежелание детально разбираться, но подвиг автора я повторить не смог. И всё же решил реализовать эту идею по нескольким причинам:
— не отвлекать оператора за АРМ, к которому подключено МФУ;
— ускорить процесс получения электронных копий за счет автоподатчика листов и двухстороннего сканирования.
Итак, имеем: МФУ Canon imageRUNNER 1133А подключено по USB к компьютеру под управлением ОС Windows 7. Сеть имеет доменное управление, есть отдельный компьютер с файлохранилищем.
1. В вышеназванной статье ищем ссылку на программу автора
Замечание: Первоначально у автора было задействовано 3 кнопки (по файлу config.ini и scan.js это видно). Поэтому в исходниках со строки 31 файла scan.js добавляем еще одно условие. Вот кусок кода, который у меня получился:
Как компилировать у автора написано.
2. Логинимся администратором и распаковываем архив в C:\ProgramData\scan и даем полный доступ группе Domain Users (или какой-то другой) на эту директорию. В принципе из архива нужны только два файла config.ini и scan.js.
3. В консоле администратора выполняем
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 под свои нужды
Вот мой:
11. Еще нам понадобится утилита, которая позволит запускать полностью скрытые консольные процессы hidcon. Взять можно здесь. Их архива достаем hidcon-x64.exe или hidcon-x32.exe, копируем в C:\ProgramData\scan и для краткости переименовываем в hidcon.exe
12. Как и автор той статьи для сканирования я использовал iCopy. Архив с программой распаковал в C:\ProgramData\scan. Рекомендую перед сканированием запустить программу с графическим интерфейсом и отладить требуемые режимы.
13. Листинг каждого cmd-файла для определенного действия (кодировка Windows 1251)
14. На той машине, которая предоставляет шару для сканирования (в моём случае ОС Windows), в планировщик добавляем такое задание: каждый день в 21:00 выполнять scan_move.cmd (кодировка OEM 866)
Возле МФУ повесили:
UPD 5.05.2014: Обнаружилось неудобство — сканирование не происходит, если никто не залогинется локально.
Очень давно была такая статья как реализовать автоматическое сканирование при нажатии кнопки на сканере, но то ли у меня руки кривые, то ли нежелание детально разбираться, но подвиг автора я повторить не смог. И всё же решил реализовать эту идею по нескольким причинам:
— не отвлекать оператора за АРМ, к которому подключено МФУ;
— ускорить процесс получения электронных копий за счет автоподатчика листов и двухстороннего сканирования.
Итак, имеем: МФУ 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: Обнаружилось неудобство — сканирование не происходит, если никто не залогинется локально.