#cs
autoscan V.2.2
Скрипт предназначен для автоматического сканирования через стандартный WIA интерфейс сканера.
Для работы не требуются какие-либо дополнительные программы.
Делается просмотр каждого отсканированного изображения стандартными средствами WinXP Rus.
(Для silent-автосканирования, т.е. без просмотра, используйте первую версию скрипта)
Порядок работы:
1. Подключить сканер.
2. Запустить скрипт или скомпилированный *.exe файл.
3. Выставить настройки, сделать пробное сканирование, указать папку и имя файла и т.д.
4. Нажать клавишу "s" (англ. раскладка клавиатуры)для запуска автосканирования.
5. Если автосканирование не запустилось, то нажимая кнопки "далее/назад" перейти к окну мастера "Изображения успешно скопированы..."
Клавиши управления:
"s"- запуск автосканирования
"o"- сканировать медленнее
"p"-сканировать быстрее
"ESC"-завершение работы скрипта
"Pause/Break"-пауза/продолжение сканирования
Благодарности:
Astra55 - за помощь в отладке скрипта и идеи использовать стандартные возможности WinXP для сканирования и просмотра.
ViSiToR - за топик по AutoIt на Ru.Board'е.
Скрипт можно свободно копировать, модифицировать и распространять без каких-либо ограничений.
Автор не несет ответственности за использование скрипта, а также за вред и убытки из-за возможных ошибок.
22.01.08
U235 (alexrey036\<at>\gmail.com)
#ce
Global $Interval=4000
Global $Paused
Opt("WinTitleMatchMode", 2)
Run ("wiaacmgr.exe")
WinWait ( "Мастер работы", "Мастер поможет скопировать изображения")
ControlSend ( "Мастер работы", "Мастер поможет скопировать изображения", "[CLASS:Button; TEXT:&Далее >]", "{ENTER}" )
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
HotKeySet("p", "HiSpeed")
HotKeySet("o", "LowSpeed")
HotKeySet("s", "RunScan")
While 1
Sleep(1000); задержка в милисекундах
WEnd
Func RunScan()
While 1
$ext =StringLeft(ControlCommand ( "Мастер работы", "", "ComboBox2", "GetCurrentSelection", "" ),1); Первая буква формата файла из ComboBox'a
WinWait ( "Мастер работы", "Изображения успешно скопированы")
WinSetState ( "Мастер работы", "", @SW_MINIMIZE )
ControlClick ( "Мастер работы", "Изображения успешно скопированы", "[CLASS:Button; TEXT:< &Назад]")
WinWait ( "Мастер работы", "Тип изображения")
ControlClick ( "Мастер работы", "Тип изображения", "[CLASS:Button; TEXT:&Далее >]" )
WinWait ( "Мастер работы", "1.")
ControlClick ( "Мастер работы", "1.", "[CLASS:Button; TEXT:&Далее >]" )
WinWait ( "Мастер работы", "Размещение")
$dir=ControlGetText ( "Мастер работы", "Размещение", "Edit1" )
$name=ControlGetText ( "Мастер работы", "Размещение", "Edit2" )
$fullName=CorrectName($dir, $name, $ext)
WinWait ( "Мастер работы", "Изображения успешно скопированы")
View ($fullName)
Sleep($Interval); задержка в милисекундах
WEnd
EndFunc ;==>RunScan
Func Terminate()
WinSetState ( "Мастер работы", "", @SW_RESTORE )
Exit 0
EndFunc ;==>Terminate
Func TogglePause()
$Paused = NOT $Paused
While $Paused
Sleep(100)
ToolTip('Script is "Paused"',0,0)
WEnd
ToolTip("")
EndFunc ;==>TogglePause
Func HiSpeed()
If $Interval>300 Then
$Interval = $Interval-300
sleep(100)
TrayTip ( "Interval", $Interval&" msec", 2 )
EndIf
EndFunc ;==>HiSpeed
Func LowSpeed()
$Interval = $Interval+300
TrayTip ( "Interval", $Interval&" msec", 2 )
EndFunc ;==>LowSpeed
Func View($path)
Run ("rundll32.exe "&@SystemDir&"\shimgvw.dll,ImageView_Fullscreen "&$path,@SystemDir)
WinWait("Программа просмотра изображений и факсов", "",1); ждем не более секунды окна просмотрщика
WinSetState ( "Программа просмотра изображений и факсов", "", @SW_MAXIMIZE )
EndFunc ;==>View
Func CorrectName($dir,$name,$ext); составление полного имени файла из данных Edit и некоторые проверки на корректность, спасибо M$ :-(.
$MyPictFolder=RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","My Pictures"); полный путь к папке мои рисунки
$MyDocsFolder=RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","Personal"); полный путь к папке мои документы
$AllPictFolder=RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","CommonPictures"); полный путь к папке общие рисунки
$MyDocs=RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{450D8FBA-AD25-11D0-98A8-0800361B1103}","");короткое название папки мои документы
$AllPict=RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\LocalizedResourceName","@shell32.dll,-28997") ; короткое название папки общие рисунки
$MyPict=StringTrimLeft($MyPictFolder, StringInStr ( $MyPictFolder, "\" , 0 , -1 ) ); короткое название папки Мои рисунки
If StringInStr ( $dir, $MyDocs , 0 , 1 )=1 then $dir=$MyDocsFolder&StringTrimLeft($dir,StringLen($MyDocs))
If StringInStr ( $dir, $MyPict , 0 , 1 )=1 then $dir=$MyPictFolder&StringTrimLeft($dir,StringLen($MyPict))
If StringInStr ( $dir, $AllPict , 0 , 1 )=1 then $dir=$AllPictFolder&StringTrimLeft($dir,StringLen($AllPict))
If StringRight( $dir, 1 )="\" Then $dir=StringTrimRight($dir, 1)
$HideFileExt=RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced","HideFileExt")
If $HideFileExt=1 Then
Select
Case $ext = "P"
$ext=".png"
Case $ext = "B"
$ext=".bmp"
Case $ext = "J"
$ext=".jpg"
Case $ext = "T"
$ext=".tif"
EndSelect
$name=$name&$ext
EndIf
$fullName=$dir&"\"&$name
If Not FileExists($fullName) Then MsgBox(4096, "Внимание","Полный путь к файлу:"&@CRLF&$fullName&@CRLF&" не корректен."&@CRLF& "Просмотр недоступен."&@CRLF&"Остановите скрипт и измените папку сканирования", 10)
Return $fullName
EndFunc ;==>CorrectName