|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как сделать выбор устанавливаемых программ по чекбокс? |
|
|
[решено] Как сделать выбор устанавливаемых программ по чекбокс?
|
Ветеран Сообщения: 2756 |
Профиль | Отправить PM | Цитировать Собственно нашел вот такую тему но не смог переделать под свои нужды. Прикол с папками как в той теме мне не нужен. Мне просто нужна возможность выбирать птичками необходимые пункты. Снизу кнопка Выполнить или Отмена. При выполнении скрипта нужно чтобы каждой птичке соответствовала выполнение своего действия через команду RunWait. При этом, после нажатия Выполнить желательно чтобы кнопки и птички затемнились чтоб нельзя было чего нить нажать. А окно пусть не исчезает. А для индикации того, что система не висит может можно чтонить в окно повесить типо как в винде снизу справа точки моргают или что нить другое. Желательно чтобы количество птичек можно было бы легко изменять без сильной переделки скрипта. Спасибо.
|
|
------- Отправлено: 18:30, 17-09-2010 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить 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 |
------- Отправлено: 18:55, 17-09-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать Два вопроса.
1. Как все же добавить такого рода команды:
Копчиком чую что это где то в строке: а как правильно записать не знаю. 2. После нажатия кнопки Выполнить и выполнения всех команд необходимо чтобы окно закрылось |
------- Отправлено: 19:06, 17-09-2010 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить 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:
Добавь |
||
------- Отправлено: 19:25, 17-09-2010 | #4 |
Ветеран Сообщения: 2756
|
Профиль | Отправить 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 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить 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' |
|
------- Отправлено: 20:32, 17-09-2010 | #6 |
Ветеран Сообщения: 2756
|
Профиль | Отправить 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' Как сделать чтоб не обрезало? Фразы планирую еще чуть длинее писать |
------- Отправлено: 20:57, 17-09-2010 | #7 |
Ветеран Сообщения: 2756
|
Профиль | Отправить 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 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Pozia:
#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 |
|
------- Последний раз редактировалось Creat0R, 17-09-2010 в 23:37. Отправлено: 21:23, 17-09-2010 | #9 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать Creat0R, а по поводу выполнения команды скрыто подскажете?
|
------- Отправлено: 21:41, 17-09-2010 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Система - [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 |
|