|
|
|||||||||||||||||||||||||||||
|
Как научить сканеры сканировать молча по кнопкам без окон и костылей?Источник: habrahabr Alexufo
Как заставить сканеры вообще (речь пойдет про Canoscan LIDE 210) молчаливо по кнопке сканировать файл с нужными параметрами в требуемую папку?
По-моему, это самая распространенная задача и для ее решения производитель нам дает самые нераспространенные решения. В конце статьи готовая утилита, позволяющая производить сканирование с любой кнопки любого сканера в любую папку без какого либо проявления на экране. А теперь начнем с того, каким же образом это удалось реализовать… Без родного софта, кнопки Canoscan LIDE 210 работать не хотят. А с родным - вызывают жуткое негодование. Невозможно сканировать по кнопкам без открытия родного приложения. Поменять бы софт, да нету ничего. Секретаршам приходится смотреть на кошек из-за этого на 5% больше времени, может быть поэтому они так популярны?(кошки)). Я сталкивался с этой проблемой три года назад в предыдущей модели сканера, я столкнулся с этой проблемой сегодня. Я читал комментарии многих людей выбешенных этой проблемой. У нас есть в офисе паспортный сканер формата А5 Plusteck 550, он правда раза в три дороже, но его софт умеет молча с кнопок делать то, что указано в их настройках. Слава богу, что почти все сканнеры давно и поголовно поддерживают стандарты TWAIN и WIA. Это значит, что в семействе windows они должны работать без своего софта и вообще без установки каких либо драйверов производителя. Можем снести при желании весь стандартный софт. Мы будем работать через собственное безоконное приложение через WIA (качайте CmdTwain или в конце статьи наша утилита). Она написана на c# из-за количества готовых примеров. Работает очень просто:
С двумя первыми пунктами понятно, а третий мы как раз рассмотрим в этой статье. С рабочего стола утилита работает отлично. Но нам нужно добиться, чтобы она вызывалась по кнопке со сканера. Лучше всего ее поместить каким-то образом вот в это окно:
Сказать честно, информации об этом довольно мало, гугл не открыл мне Америки как и msdn. Я возможно плохо искал. Есть несколько источников (привет icopy), но они не рабочие… Но каким то образом производитель Canon (в данном случае приложения "MP Navigator EX 4.0", а на скриншоте выше "Photoshop") умудрился это сделать и мы попробуем узнать как.
Поиск решенияВсе нужные записи хранятся в реестре и для поиска изменений мы воспользуемся приложением Regshot (http://sourceforge.net/projects/regshot/) Сделаем снимок реестра до установки MP Navigator EX 4.0 и после, а результат сравнения сохраним в html файл для анализа. Я не буду приводить весь лог, который мы получили. Из него для нас оказалось интересным два ключа в реестре. Способ 1.
Данная ветка отвечает за сканеры и вебкамеры. Она содержит в себе в виде папок ваши USB подключения устройств съема изображений.
При подключении Canoscan LIDE 210 создалась директория 0014 с двумя подпапками DeviceData и Events. Если ваш сканнер поддерживает 5 кнопок, в папке Events вы увидите каждую из них даже с описанием действия в значениях ключей. (однако не все так логично, об этом ниже) Если вы подключили сканер первый раз по этому USB, то в разделах PushButtonPushed у вас будет пусто. В противном случае вы обнаружите папки с именами в виде GUID и ключами с описанием привязанного программного обеспечения, ссылки на исполняемый файл тп. А вот удалять сами папки 0014 ни в коем случае нельзя. Они не восстанавливаются даже при накате офиц драйверов и с wia больше работать не будут. Проверено
Именно эту папку вы можете повторить самостоятельно изменив GUID раздела и путь к исполняемому файлу. Логика подобия здесь работает. Только GUID придумайте уникальный. Примерно так:
Изменения в систему вступят в силу после переподключения USB разъема. Project1.exe приложение выводящие параметры %1 и %2
По нажатию на кнопку сканера мы видим наше консольное приложение выводящее параметры. Ура.
Способ 2
Какие то Прокси Эвенты? В первом случае вы должны будете сами догадаться на какой папке (0014 в нашем случае) висит ваш сканер. Достаточно записи в этом разделе, и ваше приложение будет доступно для всех событий, а при привязки WIA драйвер сделает копию из STIProxyEvent к нужной кнопке сканера. Чтобы изменения вступили в силу, требуется перезагрузка.(поменяли путь к приложению? Аналогично - перезагрузка.) Или рестарт службы WIA.
Как вы видите на картинке выше, мы можем повесить на любую клавишу нашу утилиту, которая прекрасно отрабатывает. Назначение события - это просто копия директории из STIProxyEvent в соотвествующую папку PushButtonPushed описанной в первом случае.
Итого.
Наверное, это все. С другими сканерами думаю будет все аналогично ибо - wia. Удалять стандартный софт не обязательно. Приятно, когда такую неразбериху, можно так аккуратно разрулить. Утилита (win7-64 и win 8-64): Установка
Пока не доступно для скачивания. Есть бага. UPDATE. 08.11.13 1) Canon mp280 по отзывам изначально как-то криво работает через мастер изображений. Сканирует только 1/4 формата А4 при прописанном жестко где только можно формате А4. Соответственно и утилита наша сканирует 1/4. Читателем статьи и обладателем данного аппарата было предложено решение повторить идею через VBscript компилируемым в exe. pastebin.com/ce5d8yFi Ссылки по теме
|
|