Як навчити сканери сканувати мовчки без вікон та костилів
Як змусити сканери взагалі (йдеться про Canoscan LIDE 210) мовчазно сканувати файл з потрібними параметрами в потрібну папку?

На мою думку, це найпоширеніша задача і для її вирішення виробник нам дає найпоширеніші рішення. Я впевнений, що в наступних версіях виробники додадуть у свій софт щось на кшталт «надіслати скан у facebook» або «поділитися в Twitter» але щоб зробити тихий режим, налаштувати раз і сканувати без вікон, не… це занадто незатребуване.
На сьогоднішній день сканер Canoscan LIDE 210 здається гарним вибором за своїми характеристиками. Проте, ціна трохи вища за побратимів. Робота від USB - зручна річ, і зовсім не погана швидкість роботи. З мінусів: погана глибина різкості CIS матриці на товстих книжках (у місцях палітурки можливе мило, але кому воно зараз потрібно?). Софт.
У нас є в офісі паспортний сканер формату А5 Plusteck 550, він правда втричі дорожчий, але його софт вміє мовчки з кнопок робити те, що вказано в їх налаштуваннях. Дякувати Богу, що майже всі сканери давно і поголовно підтримують стандарти TWAIN і WIA. Це означає, що в сімействі windows вони повинні працювати без свого софту і взагалі без встановлення будь-яких драйверів виробника.
Можемо знести за бажання весь стандартний софт. Ми будемо працювати через власний безвіконний додаток через WIA (хто не хоче робити своє, качайте CmdTwain або наприкінці статті наша утиліта). Утиліта написана на c# через кількість готових прикладів. По старту шукає перший сканер у системі та просить зберегти скан у директорію (передається параметром). Утиліта працює чудово. Аленам потрібно помістити свою програму якимось чином ось у це вікно:

Всі потрібні записи зберігаються в реєстрі і для пошуку змін ми скористаємося програмоюRegshot(http://sourceforge.net/projects/regshot/) Зробимо знімок реєстру до встановлення MP Navigator EX 4.0 і після, а результат порівняння збережемо у html файл для аналізу.
Я не наводитиму весь лог, який ми отримали. З нього для нас виявилося цікавим два ключі у реєстрі. Почну з менш цікавого способу.
Ця гілка містить у собі у вигляді папок ваші USB підключення пристроїв знімання зображення (вебкамери, сканери тощо). Якщо пристрій підключається на будь-який USB порт вперше, створюється папка з наступним порядковим номером і вкладеною ієрархією властивою типу пристрою, що підключається.

У нашому випадку при підключенні Canoscan LIDE 210 створилася директорія 0014 з двома підпамками DeviceData та Events. Ну… далі допитливі уми вже, напевно, всі зрозуміли. Якщо ваш сканер підтримує 5 кнопок, у папці Events ви побачите кожну з них навіть із описом дії у значеннях ключів. (проте не все так логічно, про це нижче)
Якщо ви вже встановлювали софт від виробника, то в розділах PushButtonPushed ви виявите папки з іменами у вигляді GUID і ключами з описом прив'язаного програмного забезпечення, посилання на файл тп.

Саме цю папку ви можете повторити самостійно змінивши GUID розділу та шлях до файлу, що виконується.

Зміни в систему набудуть чинності після перепідключення USB роз'єму.(Project1.exe додаток виводять параметри %1 і %2 ) Тепер ми можемо помилуватися, що у вікні прив'язки подій до кнопок з'явилося наше додаток:

Але меніне зрозумілий той факт, що хоч у реєстрі ми створили папку шляхом до запуску нашої програми, в корені батька якої вказано «Кнопка для посилки по емейл» у вікновому прив'язки кнопок наш додаток доступно за іншою подією. Чому так ... я до кінця не з'ясував. Може потрібно перезавантаження або хз.
Разом після натискання на кнопку сканера ми бачимо нашу консольну програму, що виводить параметри

Цей спосіб працює відразу після перепідключення USB, як я вже писав, але ви повинні розуміти, що при зміні USB роз'єму на інший, вам доведеться повторювати ваші дії. Ваші зміни прив'язані до конретного роз'єму USB. Рівно з цього, я вважаю це хоч і цілком робочим варіантом через простоту прив'язки до кожної кнопки своєї програми або ярлика з параметрами будь-якої програми ( CmdTwain спосіб для тих хто не кодує), але це не універсально і не true .
Для розробників скоріше викликатиме інтерес цей розділ. Він логічніший і правильніший.

Які то Проксі Евенти? Саме! Розділ, створений у цій директорії, дозволяє глобально бути доступним до вашої програми у вікні вибору прив'язки подій на кнопки сканера. На крізь.
Достатньо запису в цьому розділі, і ваш додаток буде доступний для всіх подій, а WIA драйвер сам передасть вашому додатку у вигляді двох параметрів, з якого пристрою йде запит і з якої кнопки. ( Наче так))
Це працює глобально незалежно від місця USB підключення. Мінус тільки один — щоб зміни набули чинності,потрібне перезавантаження.(поміняли шлях до додатку?
Windows Registry Editor Version 5.00
Але я знаю, що є якийсь спосіб і без перезавантаження. Photoshop вміє це робити. (видаляємо його ключ, ребут, вприв'язці подій на кнопки порожньо, запускаємо фотошоп, прив'язки з'являються без перезавантаження, з ключем, що ми створюємо, так не проходить) Рецепту реініціалізації даної гілки для системи я не знаю. Тому просто перезавантажуємось:

Випадаючий список з програмами для прив'язки до кнопок сканера будується з цих 2-х гілок (швидше за все є ще якісь гілки, але мене вони не зацікавили). Утиліта для сканування через WIA користується профілем за замовчуванням, який налаштовується тут.

Напевно, це все. З іншими сканерами думаю все буде аналогічно бо — wia. Видаляти стандартний софт не обов'язково. І ще, дублювати гілки реєстру для 64 бітних систем немає необхідності. Вони якимось чином самі це роблять – зручно)
Приємно, коли таку плутанину, можна так акуратно розрулити.
Утиліта (win7-64 і win 8-64):Відкрити за допомогою архіватора(7zip та ін) картинку або перейменувати на zip