#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

Hosted by uCoz