Версия AutoIt: 3.3.6.1
Описание: Программа для работы со сканерами. Сканирование в PDF и JPEG форматы
Примечания: Для работы необходим twaincontrolx (платная программа)
Помогите пожалуйста перестроить работу программы так, чтобы не было необходимости использовать twaincontrolx
Когда написал эту программу я хотел купить лицензию на twaincontrolx, но сейчас мне это не по карману.
Еще был бы признателен, если поможете оптимизировать код.
И еще при выключенном сканере программа выдает ошибки, было бы правильнее если бы она сообщала о том, что сканер не найден.
Описание: Программа для работы со сканерами. Сканирование в PDF и JPEG форматы
Примечания: Для работы необходим twaincontrolx (платная программа)
Помогите пожалуйста перестроить работу программы так, чтобы не было необходимости использовать twaincontrolx
Когда написал эту программу я хотел купить лицензию на twaincontrolx, но сейчас мне это не по карману.
Еще был бы признателен, если поможете оптимизировать код.
И еще при выключенном сканере программа выдает ошибки, было бы правильнее если бы она сообщала о том, что сканер не найден.
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
opt("TrayIconHide", 1)
; переменные
$sVer="версия 14.03.14"
$iniFile="ScanPFR.ini"
Global $Radio_CHECKED = IniRead($iniFile, "Main", "FileFormat", 1)
Global $Radio_Resolution = IniRead($iniFile, "Main", "Resolution", 200)
Global $Radio_Color = IniRead($iniFile, "Main", "Color", 2)
Global $iCheckedRadio_Number
$aYY=150
; Создать окно диалога для добавления управляющих элементов ...
$GUI=GUICreate("ScanPFR", 410, 83 + $aYY, -1, -1, _
BitOR($WS_MINIMIZEBOX, $WS_GROUP, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU))
;~ $GUI=GUICreate( $sHeadMsg, 486-20, 430, -1, -1, _
;~ BitOR($WS_MINIMIZEBOX, $WS_GROUP, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU))
GUICtrlCreateGroup("", 10, 13 + $aYY, 390, 60)
$Config = GUICtrlCreateButton("НАСТРОЙКИ", 25, 33 + $aYY, 100, 25)
$Exit = GUICtrlCreateButton("ВЫХОД", 285, 33 + $aYY, 100, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
GUICtrlCreateLabel("Сохранять в:", 10, 19, 70, 17)
$Save_As = GUICtrlCreateInput("C:\ScanPFR", 80, 16, 250, 21)
$Obzor = GUICtrlCreateButton("Выбрать", 335, 14, 65, 25)
GUICtrlCreateLabel("Имя файла:", 10, 49, 70, 17)
$Name_File = GUICtrlCreateInput("FileScan", 80, 46, 250, 21)
If $Radio_CHECKED = 1 Then
$FormatScan = GUICtrlCreateLabel("PDF", 355, 49, 65, 21)
Else
$FormatScan = GUICtrlCreateLabel("JPEG", 355, 49, 65, 21)
EndIf
$Scaner = GUICtrlCreateButton("СКАНИРОВАТЬ", 10, 80, 390, 80)
GUICtrlSetFont(-1, 19, 800, 0, "Courier New")
While 1
$msg = GUIGetMsg()
Select
Case $msg = -3 Or $msg = -1 Or $msg = $Exit Or $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $Config
_Settings_Dlg($GUI)
Case $msg = $Obzor
$Path_Obzor = FileSelectFolder("Выберете папку", "",3, "C:\")
If @error Then
ContinueLoop
EndIf
GUICtrlSetData($Save_As, $Path_Obzor)
Case $msg = $Scaner
$Save_As1 = GUICtrlRead($Save_As)
$Name_File1 = GUICtrlRead($Name_File)
If FileExists($Save_As1) = 0 Then DirCreate($Save_As1)
GUICtrlSetState($Scaner, $GUI_DISABLE)
GUICtrlSetData($Scaner, "ЖДИТЕ Я СКАНИРУЮ...")
If $Radio_CHECKED = 1 Then
_TWAIN_Start_PDF ($Save_As1, $Name_File1)
Else
_TWAIN_Start_JPEG ($Save_As1, $Name_File1)
EndIf
GUICtrlSetState($Scaner, $GUI_ENABLE)
GUICtrlSetData($Scaner, "СКАНИРОВАТЬ")
EndSelect
WEnd
;~ Дочернее окно настроек
Func _Settings_Dlg($hParent = 0)
Local $hSettings, $iGOEM_Opt
;~ MsgBox(262208,"Сообщение...", $Radio_Color)
;Предотвращение проблем в случае если главный GUI использует режим событий
$iGOEM_Opt = Opt("GUIOnEventMode", 0)
$hSettings_GUI = GUICreate("Настройки", 360, 180, -1, -1, -1, -1, $hParent)
GUICtrlCreateGroup("Формат:", 10, 5, 160, 50)
If $Radio_CHECKED = 1 Then
$PDF_Radio = GUICtrlCreateRadio("PDF", 35, 27, 50, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$JPEG_Radio = GUICtrlCreateRadio("JPEG", 95, 27, 50, 17)
Else
$PDF_Radio = GUICtrlCreateRadio("PDF", 35, 27, 50, 17)
$JPEG_Radio = GUICtrlCreateRadio("JPEG", 95, 27, 50, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
EndIf
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("Качество:", 10, 60, 160, 75)
If $Radio_Resolution = 150 Then
$Radio1 = GUICtrlCreateRadio("150 dpi", 35, 80, 55, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Radio2 = GUICtrlCreateRadio("200 dpi", 95, 80, 55, 17)
$Radio3 = GUICtrlCreateRadio("300 dpi", 35, 110, 55, 17)
$Radio4 = GUICtrlCreateRadio("600 dpi", 95, 110, 55, 17)
Else
If $Radio_Resolution = 200 Then
$Radio1 = GUICtrlCreateRadio("150 dpi", 35, 80, 55, 17)
$Radio2 = GUICtrlCreateRadio("200 dpi", 95, 80, 55, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Radio3 = GUICtrlCreateRadio("300 dpi", 35, 110, 55, 17)
$Radio4 = GUICtrlCreateRadio("600 dpi", 95, 110, 55, 17)
Else
If $Radio_Resolution = 300 Then
$Radio1 = GUICtrlCreateRadio("150 dpi", 35, 80, 55, 17)
$Radio2 = GUICtrlCreateRadio("200 dpi", 95, 80, 55, 17)
$Radio3 = GUICtrlCreateRadio("300 dpi", 35, 110, 55, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Radio4 = GUICtrlCreateRadio("600 dpi", 95, 110, 55, 17)
Else
If $Radio_Resolution = 600 Then
$Radio1 = GUICtrlCreateRadio("150 dpi", 35, 80, 55, 17)
$Radio2 = GUICtrlCreateRadio("200 dpi", 95, 80, 55, 17)
$Radio3 = GUICtrlCreateRadio("300 dpi", 35, 110, 55, 17)
$Radio4 = GUICtrlCreateRadio("600 dpi", 95, 110, 55, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
Else
$Radio1 = GUICtrlCreateRadio("150 dpi", 35, 80, 55, 17)
$Radio2 = GUICtrlCreateRadio("200 dpi", 95, 80, 55, 17)
$Radio3 = GUICtrlCreateRadio("300 dpi", 35, 110, 55, 17)
$Radio4 = GUICtrlCreateRadio("600 dpi", 95, 110, 55, 17)
EndIf
EndIf
EndIf
EndIf
GUICtrlCreateGroup("Картинка:", 190, 60, 160, 75)
If $Radio_Color = 1 Then
$ColorOn = GUICtrlCreateRadio("Цветная", 210, 80, 90, 17)
$ColorOff = GUICtrlCreateRadio("Черно-белая", 210, 110, 90, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
Else
$ColorOn = GUICtrlCreateRadio("Цветная", 210, 80, 90, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$ColorOff = GUICtrlCreateRadio("Черно-белая", 210, 110, 90, 17)
EndIf
$DeviceBtn = GUICtrlCreateButton ("Выбрать сканер", 190, 5, 160, 50)
$SaveBtn = GUICtrlCreateButton ("Сохранить", 10, 142, 340, 30)
GUISetState(@SW_DISABLE, $hParent)
GUISetState(@SW_SHOW, $hSettings_GUI)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $radio1 To $radio4
$iCheckedRadio_Number=($nMsg+1)-$radio1; фиксируем номер активного Radio
Case $SaveBtn
$Radio_CHECKED = Number(GUICtrlRead($PDF_Radio) = $GUI_CHECKED)
If $Radio_CHECKED = 1 Then
IniWrite($iniFile, "Main", "FileFormat", 1)
;~ MsgBox(262208,"Сообщение...", $Radio_CHECKED)
GUICtrlSetData ($FormatScan, "PDF")
Else
IniWrite($iniFile, "Main", "FileFormat", 2)
GUICtrlSetData ($FormatScan, "JPEG")
EndIf
$Radio_Resolution = $iCheckedRadio_Number
If $Radio_Resolution = 1 Then
IniWrite($iniFile, "Main", "Resolution", "150")
$Radio_Resolution = 150
Else
If $Radio_Resolution = 2 Then
IniWrite($iniFile, "Main", "Resolution", "200")
$Radio_Resolution = 200
Else
If $Radio_Resolution = 3 Then
IniWrite($iniFile, "Main", "Resolution", "300")
$Radio_Resolution = 300
Else
If $Radio_Resolution = 4 Then
IniWrite($iniFile, "Main", "Resolution", "600")
$Radio_Resolution = 600
Else
IniWrite($iniFile, "Main", "Resolution", "200")
$Radio_Resolution = 200
EndIf
EndIf
EndIf
EndIf
$Radio_Color = Number(GUICtrlRead($ColorOn) = $GUI_CHECKED)
If $Radio_Color = 1 Then
IniWrite($iniFile, "Main", "Color", 2)
$Radio_Color = 2
Else
IniWrite($iniFile, "Main", "Color", 1)
$Radio_Color = 1
EndIf
ExitLoop
Case $DeviceBtn
$oTWAIN = ObjCreate("TwainControlXTrial.Twain")
If Not IsObj($oTWAIN) Then MsgBox(262208,"Сообщение...", "Отсутствует ($oTWAIN)")
$iSelectDevice = $oTWAIN.SelectDevice
EndSwitch
WEnd
Opt("GUIOnEventMode", $iGOEM_Opt)
GUISetState(@SW_DISABLE, $hParent)
GUISetState(@SW_ENABLE, $hParent)
GUIDelete($hSettings_GUI)
EndFunc