Что нового

Gui с чекбоксами и кнопка применить то что отмечено

Hulk777

Новичок
Сообщения
69
Репутация
1
Добрый день. Не могу создать окно с несколькими чекбоксами чтобы в конце была кнопка "Применить". По нажатии ее чтобы применялись отмеченные чекбоксы на запуск батников. Есть что то подобное в скриптах от AZJIO. Но там выводятся сообщения по выделенным чекбоксам. Под себя не могу поправить. Дайте пожалуйста код на примере одного-двух чекбоксов в окне и кнопки применить с нужными функциями.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Hulk777
код на примере одного-двух чекбоксов
Код:
#include <GuiConstantsEx.au3>

GUICreate("test", 120, 100)
$Ch1 = GUICtrlCreateCheckbox("Запуск 1.bat", 10, 10, 100, 20)
$Ch2 = GUICtrlCreateCheckbox("Запуск 2.bat", 10, 30, 100, 20)
$Btn = GUICtrlCreateButton("Применить", 10, 60, 100, 30)
GUISetState()

Do
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      Exit
    Case $Btn
      If BitAND(GUICtrlRead($Ch1), $GUI_CHECKED) Then ShellExecute("1.bat")
      If BitAND(GUICtrlRead($Ch2), $GUI_CHECKED) Then ShellExecute("2.bat")
  EndSwitch
Until 0
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Код:
#include <GUIConstantsEx.au3>
Global $hGUI, $hCheckbox1, $hCheckbox2, $hCheckbox3, $hButton1
$hGUI = GUICreate("checkboxis", 300, 200)
$hCheckbox1 = GUICtrlCreateCheckbox("один", 10, 10, 70, 30)
$hCheckbox2 = GUICtrlCreateCheckbox("два", 85, 10, 70, 30)
$hCheckbox3 = GUICtrlCreateCheckbox("три", 160, 10, 70, 30)
$hButton1 = GUICtrlCreateButton("Применить", 50, 50, 70, 30)
GUISetState(@SW_SHOW, $hGUI)
While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			ExitLoop
		Case $hButton1
			If _IsChecked($hCheckbox1) Then ConsoleWrite("Первый checkbox отмечен" & @CRLF)
			If _IsChecked($hCheckbox2) Then ConsoleWrite("Второй checkbox отмечен" & @CRLF)
			If _IsChecked($hCheckbox3) Then ConsoleWrite("Третий checkbox отмечен" & @CRLF)
	EndSwitch
WEnd
GUIDelete($hGUI)

Func _IsChecked($idControlID)
	Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
EndFunc   ;==>_IsChecked
 
Автор
H

Hulk777

Новичок
Сообщения
69
Репутация
1
Спасибо, то что надо. Но появилась еще проблемка. Как задать ожидание выполнения батника? Сейчас так "if GUICtrlRead($Checkbox1) = 1 Then Run('1.cmd')" Как изменить синтаксис чтобы батники выполнялись по очереди?
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Тебе поможет функция
Код:
ShellExecuteWait
или
Код:
RunWait
 
Автор
H

Hulk777

Новичок
Сообщения
69
Репутация
1
Спасибо. А как здесь + ставить к репутации?
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Под сообщением кнопка
kdm_up.png
 
Верх