Olega-soft.РазноеКак продолжить процесс сканирования в FineReader нажав кнопку на сканере?

Поиск по сайту:


Как продолжить процесс сканирования в FineReader, нажав кнопку на сканере?

Скрипт для определения момента нажатия кнопки на корпусе сканера и передающий это нажатие на кнопку ОК в диалоге с вопросом о продолжении сканирования программой ABBYY FineReader при сканировании нескольких страниц.

Как обычно идет процесс сканирования многостраничных документов в FineReader с остановкой между страницами, для того чтобы вставить в сканер следующую страницу?

Оператор выбирает "Сканировать несколько страниц" ставит галочку "Останавливаться между страницами", нажимает ОК. После окончания процесса появляется диалог с вопросом о продолжении сканирования. Обычно надо нажать кнопку Да для сканирования следующей страницы (иногда Нет - для завершения сканирования). Для этого надо тянуться или к клавиатуре и жать Enter, или пытаться попасть мышкой в ОК. При этом бывает необходимо еще и держать толстую книгу на стекле сканера, да так, чтобы она не сдвинулась лишний раз. И то и другое не слишком удобно, если сканер стоит "далеко" от компьютера.

Но можно ли продолжить процесс, нажав кнопку на самом сканере? Мне такого ПО еще не попадалось, поэтому решил написать свое.

Кнопки на корпусе сканера обычно запрограммированы для вызова какой либо программы от его производителя или стандартного "Мастера работы со сканером или цифровой камерой". Программы от производителя оборудования я не очень люблю устанавливать. Например, с моим сканером идут три "лишние" программы для копирования, отправки по электронной почте и публикации в Интернет. Ни одной не пользуюсь. А кнопки на сканере, максимум что могу, это вызвать их и все. Остальные операции все равно приходится выполнять с помощью клавиатуры и мыши. Никакой автоматизации!

Настроим "Мастера работы со сканером или цифровой камерой" так, чтобы при нажатии кнопки на сканере запускался он в виде такого замечательного :) окна (Мой компьютер – Свойства сканера – События – Предложить выбрать программу для запуска).

Окно выбора программы Мастера работы со сканером или цифровой камерой

Теперь при нажатии соответствующей кнопки на сканере на экране будет появляться выше изображенное окно.

Осталось сделать не много – написать программу, которая будет ожидать появление такого окна, закрывать его и нажимать ОК в программе сканирования.

В качестве среды разработки подойдет Windows Interface Language от Wilson WindowWare. Интерпретатор языка WIL можно бесплатно скачать с сайта компании (платно они предлагают компилятор).

В WinBatch Studio пишем такой скрипт:



While 1==1 ;Цикл "пока не надоест".
	Delay(3)
	ActivWin=WinGetActive(  )
	If ActivWin=="EPSON Perfection1260" Then ;Название диалогового окна, появляющегося при нажатии кнопки на сканере.
		SendKey( "{ESCAPE}" )
		Delay(3)
		;ABBYY Fine Reader - просто нажать ОК.
		SendKey( "{ENTER}" )
		break
	EndIf
EndWhile

В нем название сканера в заголовке диалогового окна "EPSON Perfection1260" меняем на свое.

Теперь можно сканировать. Открываем FineReader, начинаем процесс сканирования нескольких страниц с остановкой между ними и запускаем наш скрипт. После сканирования одной страницы появляется диалог с вопросом о продолжении сканирования. Меняем страницу в сканере. Нажимаем заранее настроенную кнопку на корпусе сканера. Появляется окно мастера для выбора программы, обнаружив которое наш скрипт закрывает его кнопкой ESC и нажимает ОК в диалоге с вопросом в FineReader'e. И так до тех пор, пока все не отсканируем.

По окончании остановить работу скрипта можно правой кнопкой мыши выбрав "Terminate" или нажав Ctrl-Break.

Этот же скрипт можно заставить работать и с любой другой программой. Например, для использования его еще и с "Мастером работы со сканером или цифровой камерой" он будет выглядеть так:



;Определяем запущенную программу сканирования.
response = 0
If AppExist("ScanMan7.exe") == @TRUE Then response = 1
If AppExist("wiaacmgr.exe") == @TRUE Then response = 2 
;Message( "SBPOK", "Запущена программа %response%." )

IF response<1 || response >2 Then
	Message("SBPOK",  "Программа сканирования не запущена.")
	Exit
EndIf

While 1==1 ;Цикл "пока не надоест".
	Delay(3)
	ActivWin=WinGetActive(  )
	If ActivWin=="EPSON Perfection1260" Then ;Название диалогового окна, появляющегося при нажатии кнопки на сканере.
		SendKey( "{ESCAPE}" )
		Delay(3)
		Switch response
		case 1
			;ABBYY Fine Reader - просто нажать ОК.
			SendKey( "{ENTER}" )
			break
		case 2
			;Мастер работы со сканером или цифровой камерой.
			;Начинаем с окна предпросмотра.
			SendKey( "{ENTER}{ENTER}" )
			Delay(30) ;Время сканирования изображения зависит от параметров. Если значение мало, то нажмет отмену.
			SendKey( "{TAB}{TAB}{ENTER}" )
			break
		EndSwitch
	EndIf
EndWhile

Открываем папку "Мои рисунки", среди задач для изображения выбираем "Получить от камеры или со сканера", делаем предварительное сканирование с настройкой всех параметров: размер сканируемой области, имени группы изображений, формата файлов и расположения группы. Возвращаемся кнопкой "Назад" до выбора предпочтений сканера (предпросмотр), запускаем наш скрипт. Получить следующее и все остальные изображения, теперь можно просто нажав кнопку на корпусе сканера. Появляется окно мастера для выбора программы, обнаружив которое наш скрипт закрывает его кнопкой ESC и нажимает два раза "Далее" в диалоге мастера. Ждет 30 секунд (задержку необходимо настроить в тексте скрипта) до окончания получения очередного изображения. Нажимает два раза TAB для выбора кнопки "Назад" и ENTER для нажатия ее и возвращения на предыдущий шаг мастера. И так до тех пор, пока не получим все изображения.

Таким образом, наш скрипт просто имитирует нажатие необходимых нам кнопок во всех экранных формах при появлении окна мастера для выбора программы сканирования при нажатии кнопки на сканере.


Olega-soft.РазноеКак продолжить процесс сканирования в FineReader нажав кнопку на сканере?

© Olega. 21:46 15.06.2006 г.
e-mail: OlegaBaranov@narod.ru

Сайт создан в системе uCoz