Что нового

[Окна, Диалоги] Создание окна с выбором скрипта для работы

Math

Новичок
Сообщения
85
Репутация
1
У меня есть 3 скрипта на avtoit, с общими переменными.

И я хочу объединить эти 3 скрипта в одну программу.
Что бы при запуске этой программы открывалось окно, в котором можно выбрать один из трёх скриптов для работы.

Собственно 2 вопроса:
1. Как написать такое окно?
2. Как в теле программы выделить эти 3 скрипта, что бы при выборе в окне скрипта1 запускался скрипт1 и т.д.

Структура программы:
Код:
;общие переменные

;тело скрипта1

;тело скрипта2

;тело скрипта3
 

Crafter

Новичок
Сообщения
6
Репутация
3
0: Не ясно в чем возникла проблема, совсем.
1: по окнам в AutoIt есть прекрасный раздел в русской справке.
2: Если нет нужды запускать эти скрипты в отдельные процессы, то структура будет такой:
Код:
;общие переменные

;тело скрипта1
Func script1()
;блок команд скрипта
EndFunc
;а тут блок функций скрипта
;конец тела 1

;тело скрипта2
Func script2()

EndFunc

;тело скрипта3
Func script3()

EndFunc


А потом в блоке создания окна повесь на кнопки вызов функций. Вот и все, или есть какие-то особенности тобой не упомянутые в первом сообщении?
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Код:
$File = FileOpenDialog('Выберите скрипт', '', 'AutoIt Script (*.au3)', '', '', GUICreate(''))
If @error Then Exit
Run(FileGetShortName(@AutoItExe) & ' /AutoIt3ExecuteScript ' & FileGetShortName($File))
 
Автор
M

Math

Новичок
Сообщения
85
Репутация
1
Zaramot,
Я имел ввиду то, что надо сделать все 3 скрипта в одной программе. А у вас просто диалог открытия отдельного скрипта.

Crafter,
Проблема в том, что я пока новичек и не знаю, как это реализовать.

Как здесь сделать так, что бы при выборе номера скрипта из списка и нажатия кнопки "ОК", выполнялся нужный скрипт?
Код:
#include <GUIConstants.au3>
GUICreate ( "Выбор скрипта",230,100)
GUISetState (@SW_SHOW)

GUICtrlCreateCombo ("1",15,10)
GUICtrlSetData(-1,"2")
GUICtrlSetData(-1,"3")
GUICtrlCreateButton ("OK",35,35,160)
While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend


Func script1()
MsgBox(0, "Скрипт1", "Скрипт1 запущен.")
;далее идут операторы
EndFunc

Func script2()
MsgBox(0, "Скрипт2", "Скрипт2 запущен.")
;далее идут операторы
EndFunc

Func script3()
MsgBox(0, "Скрипт3", "Скрипт3 запущен.")
;далее идут операторы
EndFunc
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Math [?]
Как здесь сделать так, что бы при выборе номера скрипта из списка и нажатия кнопки "ОК", выполнялся нужный скрипт?

Самый простой вариант:
Код:
#include <GUIConstants.au3>
$hForm=GUICreate ( "Выбор скрипта",230,100)

$hCombo=GUICtrlCreateCombo ("1",15,10)
GUICtrlSetData(-1, "2|3", "1") 
$Button=GUICtrlCreateButton ("OK",35,35,160)

GUISetState (@SW_SHOW)

While 1
    $msg = GUIGetMsg()
    Switch $msg
		Case $GUI_EVENT_CLOSE 
			Exit
		Case $Button	
			$ScriptNumber=GUICtrlRead($hCombo)
			If $ScriptNumber=1 Then 
				script1()
			ElseIf $ScriptNumber=2 Then 
				script2()
			Else
				script3()
			EndIf
	EndSwitch
Wend


Func script1()
MsgBox(0, "Скрипт1", "Скрипт1 запущен.")
;далее идут операторы
EndFunc

Func script2()
MsgBox(0, "Скрипт2", "Скрипт2 запущен.")
;далее идут операторы
EndFunc

Func script3()
MsgBox(0, "Скрипт3", "Скрипт3 запущен.")
;далее идут операторы
EndFunc
 
Верх