Войти

Показать полную графическую версию : [решено] Как правильно записать скрипт


Centrinar
19-04-2010, 21:12
Local $check[6], $prog[6]
$check[1] = GUICtrlCreateCheckbox("Прог1", 10, 30, 100, 15)
$check[2] = GUICtrlCreateCheckbox("Прог2", 10, 55, 100, 15)
$check[3] = GUICtrlCreateCheckbox("Прог3", 10, 80, 100, 15)
$check[4] = GUICtrlCreateCheckbox("Прог4", 10, 105, 100, 15)
$check[5] = GUICtrlCreateCheckbox("Прог5", 10, 130, 100, 15)

$prog[1] = "Setup.exe"
$prog[2] = "Seup2.exe"
$prog[3] = "Seup3.exe"
$prog[4] = "Seup4.exe"
$prog[5] = "Seup5.exe"

For $i = 1 to 5
If GUICtrlRead($check[$i]) = 1 Then
RunWait($prog[$i])
EndIf
Next


Смысл в том что при выборе проги1 должен запуститься именно Setup1 и т.д. Но в итоге он постоянно запускает только Setup1.

madmasles
19-04-2010, 21:56
Centrinar,
А так попробуйте: #include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Dim (http://www.autoitscript.com/autoit3/docs/keywords.htm#Dim) $check[6], $prog[6]
$prog[1] = "Setup.exe"
$prog[2] = "Seup2.exe"
$prog[3] = "Seup3.exe"
$prog[4] = "Seup4.exe"
$prog[5] = "Seup5.exe"
$Form1 = GUICreate (http://www.autoitscript.com/autoit3/docs/functions/GUICreate.htm)("", 100, 150, -1, -1)
$check[1] = GUICtrlCreateCheckbox (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlCreateCheckbox.htm)("Прог1", 10, 10, 100, 15)
$check[2] = GUICtrlCreateCheckbox (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlCreateCheckbox.htm)("Прог2", 10, 30, 100, 15)
$check[3] = GUICtrlCreateCheckbox (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlCreateCheckbox.htm)("Прог3", 10, 50, 100, 15)
$check[4] = GUICtrlCreateCheckbox (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlCreateCheckbox.htm)("Прог4", 10, 70, 100, 15)
$check[5] = GUICtrlCreateCheckbox (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlCreateCheckbox.htm)("Прог5", 10, 90, 100, 15)
$Button1 = GUICtrlCreateButton (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlCreateButton.htm)("Button1", 10, 110, 80, 25)
GUISetState (http://www.autoitscript.com/autoit3/docs/functions/GUISetState.htm)(@SW_SHOW (http://www.autoitscript.com/autoit3/docs/macros.htm#@SW_SHOW))

While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) 1
$nMsg = GUIGetMsg (http://www.autoitscript.com/autoit3/docs/functions/GUIGetMsg.htm)()
Switch (http://www.autoitscript.com/autoit3/docs/keywords.htm#Switch) $nMsg
Case (http://www.autoitscript.com/autoit3/docs/keywords.htm#Case) $GUI_EVENT_CLOSE
Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit)
Case (http://www.autoitscript.com/autoit3/docs/keywords.htm#Case) $Button1
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) 5
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) GUICtrlRead (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlRead.htm)($check[$i]) = 1 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
MsgBox (http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm)(0, "", $prog[$i])
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
EndSwitch (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndSwitch)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)

Centrinar
19-04-2010, 22:13
Если с MsgBox(0, "", $prog[$i]) то все работает как надо, но если поставить RunWait($prog[$i]) то он опять запускает только Прог1

madmasles
19-04-2010, 22:28
Centrinar,
Может быть, это потому, что Вы используете RunWait и скрипт ждет, пока не отработает 1-ая программа. Я скомпилировал 5 скриптов вида MsgBox(0, "1", "1", 5) - ...- MsgBox(0, "5", "5", 5) и у меня все работает.

Centrinar
19-04-2010, 22:44
согласен, но как сделать с RunWait, нужно что бы он не запускал следующую программу пока не закончил с предыдущей

madmasles
19-04-2010, 22:54
Centrinar,
Я же не знаю, что за программа Setup.exe, что она делает и сколько времени отрабатывает. Я скомпилировал 5 скриптов у меня с RunWait отрабатывает.

Centrinar
19-04-2010, 23:10
Нашел свою тупую ошибку "Seup2.exe".Все работает СПС

Creat0R
19-04-2010, 23:36
то он опять запускает только Прог1 »
Этот пример запустит всё что отмечено птичкой, по очерёдности.

Кстати я бы так сделал, в целях оптимизации:

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

; Только эту строку и нужно править для добавления новых, или удаления пунктов ;)
Global (http://www.autoitscript.com/autoit3/docs/keywords.htm#Global) $sProgs = 'Setup.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5'

Global (http://www.autoitscript.com/autoit3/docs/keywords.htm#Global) Const (http://www.autoitscript.com/autoit3/docs/keywords.htm#Const) $aProgs = StringSplit (http://www.autoitscript.com/autoit3/docs/functions/StringSplit.htm)($sProgs, '|')
Global (http://www.autoitscript.com/autoit3/docs/keywords.htm#Global) $anCheckBoxes[$aProgs[0]+1]

$Form1 = GUICreate (http://www.autoitscript.com/autoit3/docs/functions/GUICreate.htm)("", 100, 150, -1, -1)

$iTop = 10

For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $aProgs[0]
$anCheckBoxes[$i] = GUICtrlCreateCheckbox (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlCreateCheckbox.htm)(StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($aProgs[$i], '^.*=', ''), 10, $iTop, 100, 15)
$iTop += 20
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)

$Button1 = GUICtrlCreateButton (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlCreateButton.htm)("Button1", 10, 110, 80, 25)

GUISetState (http://www.autoitscript.com/autoit3/docs/functions/GUISetState.htm)(@SW_SHOW (http://www.autoitscript.com/autoit3/docs/macros.htm#@SW_SHOW))

While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) 1
$nMsg = GUIGetMsg (http://www.autoitscript.com/autoit3/docs/functions/GUIGetMsg.htm)()

Switch (http://www.autoitscript.com/autoit3/docs/keywords.htm#Switch) $nMsg
Case (http://www.autoitscript.com/autoit3/docs/keywords.htm#Case) $GUI_EVENT_CLOSE
Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit)
Case (http://www.autoitscript.com/autoit3/docs/keywords.htm#Case) $Button1
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $aProgs[0]
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) GUICtrlRead (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlRead.htm)($anCheckBoxes[$i]) = 1 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$sProgName = StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($aProgs[$i], '^.*=', '')
$sProgExe = StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($aProgs[$i], '=.*$', '')

MsgBox (http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm)(64, $sProgName, $sProgExe)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
EndSwitch (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndSwitch)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)

Centrinar
20-04-2010, 00:13
Creat0R СПАСИБО!




© OSzone.net 2001-2012