[решено] Как правильно записать скрипт

Ответить
Аватара пользователя
Centrinar

[решено] Как правильно записать скрипт

Сообщение Centrinar »

Код:

Код: Выделить всё

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

Re: [решено] Как правильно записать скрипт

Сообщение madmasles »

Centrinar,

А так попробуйте:

Код:

Код: Выделить всё

#include 
#include 
#include 
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("", 100, 150, -1, -1)
$check[1] = GUICtrlCreateCheckbox("Прог1", 10, 10, 100, 15)
$check[2] = GUICtrlCreateCheckbox("Прог2", 10, 30, 100, 15)
$check[3] = GUICtrlCreateCheckbox("Прог3", 10, 50, 100, 15)
$check[4] = GUICtrlCreateCheckbox("Прог4", 10, 70, 100, 15)
$check[5] = GUICtrlCreateCheckbox("Прог5", 10, 90, 100, 15)
$Button1 = GUICtrlCreateButton("Button1", 10, 110, 80, 25)
GUISetState(@SW_SHOW)
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            For $i = 1 To 5
                If GUICtrlRead($check[$i]) = 1 Then
                    MsgBox(0, "", $prog[$i])
                EndIf
            Next
    EndSwitch
WEnd
Аватара пользователя
Centrinar

Re: [решено] Как правильно записать скрипт

Сообщение Centrinar »

Если с

Код:

Код: Выделить всё

MsgBox(0, "", $prog[$i])

то все работает как надо, но если поставить

Код:

Код: Выделить всё

RunWait($prog[$i])

то он опять запускает только Прог1
Аватара пользователя
madmasles

Re: [решено] Как правильно записать скрипт

Сообщение madmasles »

Centrinar,

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

Re: [решено] Как правильно записать скрипт

Сообщение Centrinar »

согласен, но как сделать с RunWait, нужно что бы он не запускал следующую программу пока не закончил с предыдущей
Аватара пользователя
madmasles

Re: [решено] Как правильно записать скрипт

Сообщение madmasles »

Centrinar,

Я же не знаю, что за программа Setup.exe, что она делает и сколько времени отрабатывает.
Цитата:



Я скомпилировал 5 скриптов



у меня с RunWait отрабатывает.
Аватара пользователя
Centrinar

Re: [решено] Как правильно записать скрипт

Сообщение Centrinar »

Нашел свою тупую ошибку "Seup2.exe".Все работает СПС
Аватара пользователя
Creat0R

Re: [решено] Как правильно записать скрипт

Сообщение Creat0R »

Цитата Centrinar:



то он опять запускает только Прог1
[решено] Как правильно записать скрипт




Этот пример запустит всё что отмечено птичкой, по очерёдности.



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





Код:

Код: Выделить всё

#include 
#include 
#include 
; Только эту строку и нужно править для добавления новых, или удаления пунктов ;)
Global $sProgs = 'Setup.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5'
Global Const $aProgs = StringSplit($sProgs, '|')
Global $anCheckBoxes[$aProgs[0]+1]
$Form1 = GUICreate("", 100, 150, -1, -1)
$iTop = 10
For $i = 1 To $aProgs[0]
    $anCheckBoxes[$i] = GUICtrlCreateCheckbox(StringRegExpReplace($aProgs[$i], '^.*=', ''), 10, $iTop, 100, 15)
    $iTop += 20
Next
$Button1 = GUICtrlCreateButton("Button1", 10, 110, 80, 25)
GUISetState(@SW_SHOW)
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            For $i = 1 To $aProgs[0]
                If GUICtrlRead($anCheckBoxes[$i]) = 1 Then
                    $sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '')
                    $sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '')
                    MsgBox(64, $sProgName, $sProgExe)
                EndIf
            Next
    EndSwitch
WEnd
Ответить

Вернуться в «AutoIt»