Что нового

Запуск файлов из Checkbox

baryvoice

Новичок
Сообщения
7
Репутация
0
Здравствуйте. Пытаюсь в 4 утра написать такую вещь, чтобы по выбору чекбокса №1 запускался файл №1, по выбору №2, файл №2, но лыжи не едут.
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 303, 160, 192, 124)

Global $CheckBoxes[4], $check = 0

$CheckBoxes[0]  = GUICtrlCreateCheckbox("Номер 1", 16, 16, 97, 17)
$CheckBoxes[1]  = GUICtrlCreateCheckbox("Номер 2", 16, 40, 97, 17)
$CheckBoxes[2]  = GUICtrlCreateCheckbox("Номер 3", 16, 64, 97, 17)
$CheckBoxes[3]  = GUICtrlCreateCheckbox("Номер 4", 16, 88, 97, 17)
$Button1 = GUICtrlCreateButton("Button1", 136, 32, 121, 65)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

        Case $Button1
            For $i = 0
                If GUICtrlRead($CheckBoxes[0]) = $GUI_CHECKED Then
                    Run("C:\off.bat")
                    $check = 1
                 EndIf
            For $i = 1
                If GUICtrlRead($CheckBoxes[1]) = $GUI_CHECKED Then
                    Run("C:\off1.bat")
                    $check = 1
                EndIf
            Next
            If $check = 0 Then
                MsgBox(0, 'Уведомление', 'Ничего не выбрано.')
            EndIf
 $check = 0
    EndSwitch
WEnd

Подскажите молодому, где ошибка? Как сделать чтобы заработал?
Пока удалось только добиться чтобы по любому из чекбоксов запускался один и тот же файл.
А надо:
Чек 1- файл 1
Чек 2 - файл 2 и т.д.
 

xXx

╚{■_■}╗
Меценат
Сообщения
226
Репутация
86
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $Button1
Global $CheckBoxes[5][2] = [[4], _
        [0, 'C:\off_1.bat'], _
        [0, 'C:\off_2.bat'], _
        [0, 'C:\off_3.bat'], _
        [0, 'C:\off_4.bat']]

$Form1 = GUICreate("Form1", 303, 160, 192, 124)
$CheckBoxes[1][0] = GUICtrlCreateCheckbox("Номер 1", 16, 16, 97, 17)
$CheckBoxes[2][0] = GUICtrlCreateCheckbox("Номер 2", 16, 40, 97, 17)
$CheckBoxes[3][0] = GUICtrlCreateCheckbox("Номер 3", 16, 64, 97, 17)
$CheckBoxes[4][0] = GUICtrlCreateCheckbox("Номер 4", 16, 88, 97, 17)
$Button1 = GUICtrlCreateButton("Button1", 136, 32, 121, 65)
GUISetState(@SW_SHOW)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            For $i = 1 To $CheckBoxes[0][0]
                If GUICtrlRead($CheckBoxes[$i][0]) = $GUI_CHECKED Then
;~                     Run($CheckBoxes[$i][1])
                    MsgBox(262144, Default, 'Run("' & $CheckBoxes[$i][1] & '")') ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< П Р О В Е Р К А >>>>>>>>>>>>>>>>>>>>>>>>
                    GUICtrlSetState($CheckBoxes[$i][0], $GUI_UNCHECKED)
                EndIf
            Next
    EndSwitch
WEnd
 
Последнее редактирование:
Автор
baryvoice

baryvoice

Новичок
Сообщения
7
Репутация
0
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $Button1
Global $CheckBoxes[5][2] = [[4], _
        [0, 'C:\off_1.bat'], _
        [0, 'C:\off_2.bat'], _
        [0, 'C:\off_3.bat'], _
        [0, 'C:\off_4.bat']]

$Form1 = GUICreate("Form1", 303, 160, 192, 124)
$CheckBoxes[1][0] = GUICtrlCreateCheckbox("Номер 1", 16, 16, 97, 17)
$CheckBoxes[2][0] = GUICtrlCreateCheckbox("Номер 2", 16, 40, 97, 17)
$CheckBoxes[3][0] = GUICtrlCreateCheckbox("Номер 3", 16, 64, 97, 17)
$CheckBoxes[4][0] = GUICtrlCreateCheckbox("Номер 4", 16, 88, 97, 17)
$Button1 = GUICtrlCreateButton("Button1", 136, 32, 121, 65)
GUISetState(@SW_SHOW)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            For $i = 1 To $CheckBoxes[1][0]
                If GUICtrlRead($CheckBoxes[$i][0]) = $GUI_CHECKED Then
;~                     Run($CheckBoxes[$i][1])
                    MsgBox(262144, Default, 'Run("' & $CheckBoxes[$i][1] & '")') ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< П Р О В Е Р К А >>>>>>>>>>>>>>>>>>>>>>>>
                    GUICtrlSetState($CheckBoxes[$i][0], $GUI_UNCHECKED)
                EndIf
            Next
    EndSwitch
WEnd
Спасибо тебе милостливый человек)
Буду теперь курить форум, как реализовать чтобы по команде с моего ПК эти батники запускались на ПК в сети)
Сообщение автоматически объединено:

Хм, попробовал продолжит по вашему принципу, работает запуск только первых 3х батников. Укажите на ошибку, плиз
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $Button1
Global $CheckBoxes[11][2] = [[11], _
        [0, 'C:\off_1.bat'], _
        [0, 'C:\off_2.bat'], _
        [0, 'C:\off_3.bat'], _
        [0, 'C:\off_4.bat'], _
        [0, 'C:\off_5.bat'], _
        [0, 'C:\off_6.bat'], _
        [0, 'C:\off_7.bat'], _
        [0, 'C:\off_8.bat'], _
        [0, 'C:\off_9.bat'], _
        [0, 'C:\off_10.bat']]

$Form1 = GUICreate("Off PC", 503, 360, 192, 124)
$CheckBoxes[1][0] = GUICtrlCreateCheckbox("Номер 1", 16, 16, 97, 17)
$CheckBoxes[2][0] = GUICtrlCreateCheckbox("Номер 2", 16, 40, 97, 17)
$CheckBoxes[3][0] = GUICtrlCreateCheckbox("Номер 3", 16, 64, 97, 17)
$CheckBoxes[4][0] = GUICtrlCreateCheckbox("Номер 4", 16, 88, 97, 17)
$CheckBoxes[5][0] = GUICtrlCreateCheckbox("Номер 5", 16, 108, 97, 17)
$CheckBoxes[6][0] = GUICtrlCreateCheckbox("Номер 6", 16, 128, 97, 17)
$CheckBoxes[7][0] = GUICtrlCreateCheckbox("Номер 7", 16, 148, 97, 17)
$CheckBoxes[8][0] = GUICtrlCreateCheckbox("Номер 8", 16, 168, 97, 17)
$CheckBoxes[9][0] = GUICtrlCreateCheckbox("Номер 9", 16, 188, 97, 17)
$CheckBoxes[10][0] = GUICtrlCreateCheckbox("Номер 10", 16, 208, 97, 17)
$Button1 = GUICtrlCreateButton("Выключить ПК", 136, 32, 121, 65)
GUISetState(@SW_SHOW)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            For $i = 1 To $CheckBoxes[1][0]
                If GUICtrlRead($CheckBoxes[$i][0]) = $GUI_CHECKED Then
                    Run($CheckBoxes[$i][1])
                    ;~                    MsgBox(262144, Default, 'Run("' & $CheckBoxes[$i][1] & '")') ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< П Р О В Е Р К А >>>>>>>>>>>>>>>>>>>>>>>>
                    GUICtrlSetState($CheckBoxes[$i][0], $GUI_UNCHECKED)
                EndIf
            Next
    EndSwitch
WEnd
 
Последнее редактирование:

ra4o

AutoIT Гуру
Сообщения
1,164
Репутация
244
Может так проще (универсальнее) - можно менять количество чекбоксов изменив всего одну переменную , при слишком большом значении можно делить на несколько колонок плюс изменять размер окна GUI ?
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$iChecbox=10 ;Количество чекбоксов

$Form1 = GUICreate("Off PC", 503, 360, 192, 124)

For $i=1 to $iChecbox
    Assign('CheckBoxes'&$i,GUICtrlCreateCheckbox('Номер '&$i, 16, 16+($i-1)*24, 97, 17))
Next

$Button1 = GUICtrlCreateButton("Выключить ПК", 136, 32, 121, 65)
GUISetState(@SW_SHOW)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1

            For $i = 1 To $iChecbox
                If GUICtrlRead(Eval ( 'CheckBoxes'&$i)) = $GUI_CHECKED Then
                   
                    Run('C:\off_'&$i&'.bat')
                    ;~                    MsgBox(262144, Default, 'Run("' & $CheckBoxes[$i][1] & '")') ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< П Р О В Е Р К А >>>>>>>>>>>>>>>>>>>>>>>>
                    GUICtrlSetState(Eval ( 'CheckBoxes'&$i), $GUI_UNCHECKED)
                EndIf
            Next

    EndSwitch
WEnd
 
Автор
baryvoice

baryvoice

Новичок
Сообщения
7
Репутация
0
Может так проще (универсальнее) - можно менять количество чекбоксов изменив всего одну переменную , при слишком большом значении можно делить на несколько колонок плюс изменять размер окна GUI ?
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$iChecbox=10 ;Количество чекбоксов

$Form1 = GUICreate("Off PC", 503, 360, 192, 124)

For $i=1 to $iChecbox
    Assign('CheckBoxes'&$i,GUICtrlCreateCheckbox('Номер '&$i, 16, 16+($i-1)*24, 97, 17))
Next

$Button1 = GUICtrlCreateButton("Выключить ПК", 136, 32, 121, 65)
GUISetState(@SW_SHOW)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1

            For $i = 1 To $iChecbox
                If GUICtrlRead(Eval ( 'CheckBoxes'&$i)) = $GUI_CHECKED Then
                  
                    Run('C:\off_'&$i&'.bat')
                    ;~                    MsgBox(262144, Default, 'Run("' & $CheckBoxes[$i][1] & '")') ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< П Р О В Е Р К А >>>>>>>>>>>>>>>>>>>>>>>>
                    GUICtrlSetState(Eval ( 'CheckBoxes'&$i), $GUI_UNCHECKED)
                EndIf
            Next

    EndSwitch
WEnd
Спасибо, очень удобное решение
Сообщение автоматически объединено:

Моя опечатка, надо так:
Код:
For $i = 1 To $CheckBoxes[0][0]
... а у вас еще надо:
Код:
Global $CheckBoxes[11][2] = [[10], _
Ага, увидел, спасибо
 
Верх