Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как сделать выбор устанавливаемых программ по чекбокс?

Ответить
Настройки темы
[решено] Как сделать выбор устанавливаемых программ по чекбокс?

Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Собственно нашел вот такую тему но не смог переделать под свои нужды. Прикол с папками как в той теме мне не нужен. Мне просто нужна возможность выбирать птичками необходимые пункты. Снизу кнопка Выполнить или Отмена. При выполнении скрипта нужно чтобы каждой птичке соответствовала выполнение своего действия через команду RunWait. При этом, после нажатия Выполнить желательно чтобы кнопки и птички затемнились чтоб нельзя было чего нить нажать. А окно пусть не исчезает. А для индикации того, что система не висит может можно чтонить в окно повесить типо как в винде снизу справа точки моргают или что нить другое. Желательно чтобы количество птичек можно было бы легко изменять без сильной переделки скрипта. Спасибо.

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 18:30, 17-09-2010

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>

; Только эту строку и нужно править для добавления новых, или удаления пунктов ;)
Global $sProgs = 'Setup1.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5'

Global Const $aProgs = StringSplit($sProgs, '|')
Global $anCheckBoxes[$aProgs[0]+1] = [$aProgs[0]]

$Form1 = GUICreate("", 500, 500)

$iTop = 10
$iLeft = 20

For $i = 1 To $aProgs[0]
    $anCheckBoxes[$i] = GUICtrlCreateCheckbox(StringRegExpReplace($aProgs[$i], '^.*=', ''), $iLeft, $iTop, -1, 15)
    GUICtrlSetFont($anCheckBoxes[$i], 9, 400)

    $iTop += 20

    If $iTop > 440 Then
        $iTop = 10
        $iLeft += 100
    EndIf
Next

GUICtrlCreateLabel("Status:", 200, 475, 460, 15)
GUICtrlSetFont(-1, 9, 800)
$nStatus = GUICtrlCreateLabel("", 250, 476, 240, 15)
GUICtrlSetColor(-1, 0xFF0000)

$nStart = GUICtrlCreateButton("Выполнить", 10, 470, 80, 25)
$nCancel = GUICtrlCreateButton("Отмена", 100, 470, 80, 25)

GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $GUI_EVENT_CLOSE, $nCancel
            Exit
        Case $nStart
            For $i = 1 To $aProgs[0]
                If GUICtrlRead($anCheckBoxes[$i]) = $GUI_CHECKED Then
                    $sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '')
                    $sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '')

                    GUICtrlSetData($nStatus, StringFormat("Please wait, installing [%s]...", $sProgName))

                    GUICtrlSetFont($anCheckBoxes[$i], 9, 800)
                    _ControlsSetState($GUI_DISABLE, $anCheckBoxes[1], $anCheckBoxes[$anCheckBoxes[0]])

                    RunWait($sProgExe)

                    GUICtrlSetFont($anCheckBoxes[$i], 9, 400)
                    _ControlsSetState($GUI_ENABLE, $anCheckBoxes[1], $anCheckBoxes[$anCheckBoxes[0]])
                EndIf
            Next

            GUICtrlSetData($nStatus, "Done!")
    EndSwitch
WEnd

Func _ControlsSetState($nState, $iFirst, $iLast)
    For $iCtrlID = $iFirst To $iLast
        GUICtrlSetState($iCtrlID, $nState)
    Next
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:55, 17-09-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Два вопроса.
1. Как все же добавить такого рода команды:
HTML код: Выделить весь код
Run(@ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\1.7z"', @ScriptDir) Run(@ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\2.7z"', @ScriptDir) Run(@ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\3.7z"', @ScriptDir) Run(@ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\4.7z"', @ScriptDir) Run(@ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\5.7z"', @ScriptDir)

Копчиком чую что это где то в строке:
Код: Выделить весь код
$sProgs = 'Setup1.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5'
а как правильно записать не знаю.

2. После нажатия кнопки Выполнить и выполнения всех команд необходимо чтобы окно закрылось

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 19:06, 17-09-2010 | #3


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Pozia:
Копчиком чую что это где то в строке »
Угу, вот только не знаю зачем копчик использовать , в скрипте ведь над этой строкой написано что её только и нужно править:

Код: Выделить весь код
Global $sProgs =
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\1.7z"=Driver 1|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\2.7z"=Driver 2|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\3.7z"=Driver 3|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\4.7z"=Driver 4|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\5.7z"=Driver 5'
Цитата Pozia:
После нажатия кнопки Выполнить и выполнения всех команд необходимо чтобы окно закрылось »
Поссле (или вместо, т.к при закрытий оно особо значения не имеет)
Код: Выделить весь код
GUICtrlSetData($nStatus, "Done!")
Добавь
Код: Выделить весь код
GUIDelete($Form1)
Exit

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:25, 17-09-2010 | #4


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Creat0R, выскакивает ошибка Error: Error in expression

Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>

; Только эту строку и нужно править для добавления новых, или удаления пунктов ;)

Global $sProgs =
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\1.7z"=Driver 1|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\2.7z"=Driver 2|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\3.7z"=Driver 3|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\4.7z"=Driver 4|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\5.7z"=Driver 5'

Global Const $aProgs = StringSplit($sProgs, '|')
Global $anCheckBoxes[$aProgs[0]+1] = [$aProgs[0]]

$Form1 = GUICreate("", 500, 500)

$iTop = 10
$iLeft = 20

For $i = 1 To $aProgs[0]
    $anCheckBoxes[$i] = GUICtrlCreateCheckbox(StringRegExpReplace($aProgs[$i], '^.*=', ''), $iLeft, $iTop, -1, 15)
    GUICtrlSetFont($anCheckBoxes[$i], 9, 400)

    $iTop += 20

    If $iTop > 440 Then
        $iTop = 10
        $iLeft += 100
    EndIf
Next

GUICtrlCreateLabel("Status:", 200, 475, 460, 15)
GUICtrlSetFont(-1, 9, 800)
$nStatus = GUICtrlCreateLabel("", 250, 476, 240, 15)
GUICtrlSetColor(-1, 0xFF0000)

$nStart = GUICtrlCreateButton("Выполнить", 10, 470, 80, 25)
$nCancel = GUICtrlCreateButton("Отмена", 100, 470, 80, 25)

GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $GUI_EVENT_CLOSE, $nCancel
            Exit
        Case $nStart
            For $i = 1 To $aProgs[0]
                If GUICtrlRead($anCheckBoxes[$i]) = $GUI_CHECKED Then
                    $sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '')
                    $sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '')

                    GUICtrlSetData($nStatus, StringFormat("Please wait, installing [%s]...", $sProgName))

                    GUICtrlSetFont($anCheckBoxes[$i], 9, 800)
                    _ControlsSetState($GUI_DISABLE, $anCheckBoxes[1], $anCheckBoxes[$anCheckBoxes[0]])

                    RunWait($sProgExe)

                    GUICtrlSetFont($anCheckBoxes[$i], 9, 400)
                    _ControlsSetState($GUI_ENABLE, $anCheckBoxes[1], $anCheckBoxes[$anCheckBoxes[0]])
                EndIf
            Next

            GUICtrlSetData($nStatus, "Done!")
            GUIDelete($Form1)
	    Exit
    EndSwitch
WEnd

Func _ControlsSetState($nState, $iFirst, $iLast)
    For $iCtrlID = $iFirst To $iLast
        GUICtrlSetState($iCtrlID, $nState)
    Next
EndFunc

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 20:22, 17-09-2010 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Pozia:
выскакивает ошибка Error »
Упс:

Код: Выделить весь код
Global $sProgs = _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\1.7z"=Driver 1|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\2.7z"=Driver 2|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\3.7z"=Driver 3|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\4.7z"=Driver 4|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\5.7z"=Driver 5'

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:32, 17-09-2010 | #6


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


еще нюанс. Вот при такой записи обрывает слова:

Код: Выделить весь код
Global $sProgs = _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\1.7z"=DriversNEW Computer|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\2.7z"=DriversNEW Notebook|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\3.7z"=Driver 3|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\4.7z"=Driver 4|' & _
    @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\5.7z"=Driver 5'
В окне только DriversNEW Compu и DriversNEW Noteboo

Как сделать чтоб не обрезало? Фразы планирую еще чуть длинее писать

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 20:57, 17-09-2010 | #7


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


и еще. пытаюсь записать команду чтоб выполнялась скрыто и получаю ошибку: Unterminated string

Пишу так:

Код: Выделить весь код
Global $sProgs = _
@ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\DriversNEWComputer.7z"', @ScriptDir, @SW_HIDE"=DriversNEW Computer|' & _
@ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\DriversNEWNotebook.7z"=DriversNEW Notebook'

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 21:23, 17-09-2010 | #8


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Pozia:
при такой записи обрывает слова »
Это из за размера Checkbox:

Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>

Global $iTotalProgs = 5

Global $aProgs[$iTotalProgs + 1][4] = _
    [[$iTotalProgs], _
        ['DriversNEW Computer',  @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\1.7z"', @ScriptDir, @SW_HIDE], _
        ['DriversNEW Notebook',  @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\2.7z"', @ScriptDir, @SW_HIDE], _
        ['Driver 3',             @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\3.7z"', @ScriptDir, @SW_HIDE], _
        ['Driver 4',             @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\4.7z"', @ScriptDir, @SW_HIDE], _
        ['Driver 5',             @ScriptDir & '\7z.exe x -y -aoa -o"' & @WindowsDir & '\DriversPozia" "' & @ScriptDir & '\5.7z"', @ScriptDir, @SW_HIDE] _
    ]

Global $anCheckBoxes[$iTotalProgs + 1] = [$iTotalProgs]

$Form1 = GUICreate("", 500, 500)

$iTop = 10
$iLeft = 20

For $i = 1 To $iTotalProgs
    $anCheckBoxes[$i] = GUICtrlCreateCheckbox($aProgs[$i][0], $iLeft, $iTop, 200, 15)
    GUICtrlSetFont($anCheckBoxes[$i], 9, 400)

    $iTop += 20

    If $iTop > 440 Then
        $iTop = 10
        $iLeft += 210
    EndIf
Next

GUICtrlCreateLabel("Status:", 200, 475, 460, 15)
GUICtrlSetFont(-1, 9, 800)
$nStatus = GUICtrlCreateLabel("", 250, 476, 240, 15)
GUICtrlSetColor(-1, 0xFF0000)

$nStart = GUICtrlCreateButton("Выполнить", 10, 470, 80, 25)
$nCancel = GUICtrlCreateButton("Отмена", 100, 470, 80, 25)

GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $GUI_EVENT_CLOSE, $nCancel
            Exit
        Case $nStart
            For $i = 1 To $iTotalProgs
                If GUICtrlRead($anCheckBoxes[$i]) = $GUI_CHECKED Then
                    $sProgramName = $aProgs[$i][0]
                    $sProgramExe = $aProgs[$i][1]
                    $sWorkingDir = $aProgs[$i][2]
                    $nRunState = $aProgs[$i][3]

                    If $sWorkingDir == "" Then $sWorkingDir = @WorkingDir
                    If $nRunState == "" Then $nRunState = @SW_SHOW

                    GUICtrlSetData($nStatus, StringFormat("Please wait, installing [%s]...", $sProgramName))

                    GUICtrlSetFont($anCheckBoxes[$i], 9, 800)
                    _ControlsSetState($GUI_DISABLE, $anCheckBoxes[1], $anCheckBoxes[$anCheckBoxes[0]])

                    RunWait($sProgramExe, $sWorkingDir, $nRunState)

                    GUICtrlSetFont($anCheckBoxes[$i], 9, 400)
                    _ControlsSetState($GUI_ENABLE, $anCheckBoxes[1], $anCheckBoxes[$anCheckBoxes[0]])
                EndIf
            Next

            GUICtrlSetData($nStatus, "Done!")
            GUIDelete($Form1)
            ExitLoop
    EndSwitch
WEnd

Func _ControlsSetState($nState, $iFirst, $iLast)
    For $iCtrlID = $iFirst To $iLast
        GUICtrlSetState($iCtrlID, $nState)
    Next
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Последний раз редактировалось Creat0R, 17-09-2010 в 23:37.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:23, 17-09-2010 | #9


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Creat0R, а по поводу выполнения команды скрыто подскажете?

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 21:41, 17-09-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как сделать выбор устанавливаемых программ по чекбокс?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Система - [addon] z-KeepPrefSVC - интерактивный выбор устанавливаемых программ из svcpack.inf sLiDeR-X Наборы обновлений для Windows XP/2003/Windows 7 142 09-02-2015 01:17
Mars Installer (выбор устанавливаемых приложений) Snakus Автоматическая установка Windows 2000/XP/2003 19 06-02-2012 13:04
Работа программ с флешки. Как сделать? Ахтунг Хочу все знать 2 08-05-2009 15:06
Выбор устанавливаемых драйверов icestranger Автоматическая установка Windows 2000/XP/2003 1 19-09-2008 17:16
Язык интерфейса устанавливаемых программ ULIY Хочу все знать 3 28-12-2003 03:26




 
Переход