Что нового

Checkbox (выполнение выбранного действия)

Tuxzer92

Новичок
Сообщения
65
Репутация
0
Есть скрипт, который ставит ПО, но появилась потребность в выборе устанавливаемого ПО. Например отметил галочкой и оно начало ставиться, а если ничего не выбрал, то выводится сообщение о необходимости выбора. И отдельный чекбокс для отметки всех чекбоксов.
Вот пример использования:
Но там работает сразу после выбора чекбокса, а вот как сделать чтобы работало при нажатии кнопки до меня не доходит.
Спасибо!
Код:
#RequireAdmin
#AutoIt3Wrapper_Res_Comment=Скрипт для автоматической установки минимального набора ПО
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListBoxConstants.au3>
#include <EditConstants.au3>
#include <Date.au3>
#include <File.au3>
#NoTrayIcon
$ServerDir = "\\debian-server\FILES\SOFT\MINIMUM_INSTALL\Distr"
$x86 = "\\debian-server\FILES\SOFT\Office2010x32\"
$x64 = "\\debian-server\FILES\SOFT\Office2010x64\"
$Offx32="\Office2010x32\"
$Offx64="\Office2010x64\"
$Ping = ping("debian-server",1)
$files = "Files"
$font = "Comic Sans MS"
FileInstall("1.jpg","./",1)
Const $title= "ASI Script v0.2a"
$Window = GUICreate($title, 300, 300)
GUISetBkColor(0xE0FFFF)
GUICtrlCreatePic("1.jpg", 0, 0, 300, 250)
$OKButton = GUICtrlCreateButton("Запустить",40, 250, 70)
$EXITButton = GUICtrlCreateButton("Закрыть", 190, 250, 70)
$BackButton = GUICtrlCreateButton("Назад", 115, 250, 70)
Local $FileMenu, $FileItem, $FileItem2
$FileMenu = GUICtrlCreateMenu("&Файл")
$FileItem = GUICtrlCreateMenuItem("Инструкция", $FileMenu)
$FileItem2 = GUICtrlCreateMenuItem("Выход", $FileMenu)
$FileMenu3 = GUICtrlCreateMenu("&Игры")
$FileItem4= GUICtrlCreateMenuItem("Марио",$FileMenu3)
$FileItem5= GUICtrlCreateMenuItem("Змейка",$FileMenu3)

$FileMenu2 = GUICtrlCreateMenu("&?")
$FileItem6 = GUICtrlCreateMenuItem("Changelog",$FileMenu2)
$FileItem3 = GUICtrlCreateMenuItem("О скрипте",$FileMenu2)
GUISetState(@SW_SHOW, $Window)
Local $iMsg
While 1  ;Используем бесконечный цикл While до тех пор пока не сработает ExitLoop
 $iMsg = GUIGetMsg()
 Switch $iMsg
   Case $OKButton
   $startTime = _NowCalc()
   If $Ping Then
   If FileExists($ServerDir) Then
   $sPath = FileSelectFolder('Выберите диск, на который будет скопировано ПО ', '', 3, @DesktopDir, $Window)
   ; продолжить цикл опроса от начала, если выбор отменён или объект не является папкой, например "Мой компьютер" или Корзина
   If @error Or Not StringInStr(FileGetAttrib($sPath), "D") Then ContinueLoop
   If @OSArch ='x86' Then
   _FileCopy($ServerDir, $sPath)
   $sPath = $sPath & "Distr\"
   RunWait(@ComSpec & " /c REGEDIT /s " & $sPath & "DisableRestart.reg", "")
   RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System","EnableLUA","REG_DWORD",0)
   RunWait(@ComSpec & " /c " & "gpupdate /force", "")
   _FileCopy($x86, $sPath)
   RunWait($sPath & $Offx32 & 'setup.exe /adminfile 32.MSP')
   RunWait($sPath & "7z920.exe /S")
   RunWait('C:\Program Files\7-Zip\7z.exe x "'& $sPath & 'FineReader.rar"  -o"'& $sPath &'"')
   Else
   _FileCopy($ServerDir, $sPath)
   $sPath = $sPath & "Distr\"
   RunWait(@ComSpec & " /c REGEDIT /s " & $sPath & "DisableRestart.reg", "")
   RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System","EnableLUA","REG_DWORD",0)
   RunWait(@ComSpec & " /c " & "gpupdate /force", "")
   _FileCopy($x64, $sPath)
   RunWait($sPath & $Offx64 & 'setup.exe /adminfile' & $sPath & $Offx64 & '64.MSP')
   RunWait($sPath & "7z920.exe /S")
   RunWait('C:\Program Files (86)\7-Zip\7z.exe x "'& $sPath & 'FineReader.rar"  -o"'& $sPath &'"')
   EndIf
Runwait('msiexec /i '&$sPath& 'install_flash_player_14_active_x.msi /passive')
Runwait('msiexec /i '&$sPath& 'install_flash_player_14_plugin.msi /passive')
Runwait('msiexec /i '&$sPath& 'AdbeRdr11000_ru_RU.msi /passive')
Runwait($sPath & "ccsetup419_slim.exe /S")
RunWait($sPath & "aimp_3.55.1355.exe /AUTO")
Runwait($sPath & "K-Lite\K-Lite_Codec_Pack_1065_Mega.exe /verysilent /norestart /LoadInf=.\klcp_mega_unattended.ini")
RunWait('msiexec /i ' & $sPath & 'Far30b3800.x86.20140208.msi /passive')
Runwait($sPath & "tcmd750a\INSTALL.EXE")
_FileCopy($sPath & "tcmd750a\wincmd.key","C:\totalcmd\")
Runwait($sPath & "FSViewerSetup51.exe /S")
Runwait($sPath & "mini-KMS Activator 1.3 Office 2010 VL.exe /os")
RunWait($sPath & "WinRAR 4.20.exe -a4RAi")
WinWaitClose("Установка WinRAR 4.20")
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU","NoAutoRebootWithLoggedOnUsers")
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System","EnableLUA","REG_DWORD",1)
RunWait(@ComSpec & " /c " & "gpupdate /force", "")
FileDelete($sPath & "KMSAutoXP.exe")
FileDelete($sPath & "mini-KMS Activator 1.3 Office 2010 VL.exe")
FileDelete($sPath & "DisableRestart.reg")
$endTime = _NowCalc()
$minutes = _DateDiff("n", $startTime, $endTime)
Local $hFile = FileOpen(@ScriptDir & "\LOG.log", 1) ; Открывает лог-файл в режиме записи.
_FileWriteLog($hFile, $title) ; Записывает в лог-файл передавая дескриптор возвращённый функцией FileOpen.
_FileWriteLog($hFile, "Затрачено времени на установку: " & $minutes&" минут(ы)")
FileClose($hFile)
GUICtrlCreateLabel("Готово!", 120, 100)
GUICtrlCreateLabel("Затрачено времени: " & $minutes & " минут(ы)!",58,229)
Sleep(2000)
SoundSetWaveVolume(50)
SoundPlay(@WindowsDir & "\media\tada.wav", 1)
GUIDelete()
Exit
Else
GUISetFont(14, 700, 0, $font)
GUICtrlCreateLabel("Каталог с ПО не существует!", 10, 10)
GUICtrlSetColor(-1, 0xff0000)
Sleep(2000)
GUIDelete()
Exit
EndIf
Else
GUISetFont(14, 700, 0, $font)
GUICtrlCreateLabel("Debian-server не доступен!", 10, 10)
GUICtrlSetColor(-1, 0xff0000)
Sleep(2000)
Exit
GUIDelete()
EndIf
Case $FileItem
     $sTextFile = $files & "\ReadMe.txt"
     Run ( "notepad.exe " & $sTextFile)
Case $GUI_EVENT_CLOSE
     ExitLoop
Case $FileItem2
     ExitLoop
Case $FileItem3
     $edit = GUICtrlCreateEdit($title & @CRLF & "Данный скрипт разработан с целью автоматической установки необходимого ПО."& @CRLF & "Дата начала разработки: 21.08.14" &@CRLF & "Разработал: Русинов Р.С." , 10, 10, 280, 230, $ES_AUTOVSCROLL + $WS_VSCROLL + $ES_NOHIDESEL + $ES_WANTRETURN + $ES_READONLY)
Case $EXITButton
     ExitLoop
Case $BackButton
     GUICtrlDelete($edit)
Case $FileItem4
     Run($files & "\MARIO\Mario.exe")
Case $FileItem5
     Run($files & "\snakeV1.0.exe")
Case $FileItem6
     $change = $files & "\changelog.txt"
     Run ( "notepad.exe " & $change)
EndSwitch
 WEnd
Exit
Exit
Func _FileCopy($fromFile,$tofile)
Local $FOF_RESPOND_YES = 16
Local $FOF_SIMPLEPROGRESS = 256
$winShell = ObjCreate("shell.application")
$winShell.namespace($tofile).CopyHere($fromFile,$FOF_RESPOND_YES)
EndFunc
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Tuxzer92
Если я вас правильно понял:

Код:
Func GUICtrlGetCheckBoxState( $iCheckBox )
	Return BitAnd( GUICtrlRead( $iCheckBox ), $GUI_CHECKED )
EndFunc


Пример использования:
Код:
Case $OKButton
		Select
			Case GUICtrlGetCheckBoxState( $CheckBox1 ) ;CheckBox1 отмечен
				; < Устанавливаем ПО 1
				
			Case GUICtrlGetCheckBoxState( $CheckBox2 );CheckBox2 отмечен
				; < Устанавливаем ПО 2
				
			Case ...
		EndSelect



Однако, такой подход неудобен, я бы на вашем поместил все данные в TreeView ( с категориями ).
 
Верх