GUI AUTOIT
GUI AUTOIT
AutoIt е в състояние да създаде прост графичен потребителски интерфейс (GUI), състоящ се от прозорец и контроли, вградени в него.
Въведение в GUI скриптовете
Всеки GUI се състои от един или повече прозореца, всеки от които съдържа един или повече контроли. Управлението на състоянието на GUI се извършва с помощта на "събития", което означава прилагане на реакции към възникващи събития, като натискане на бутон. През повечето време прозорецът стои бездействащ, чакайки събитие, което е различно от традиционния сценарий, при който трябва да наблюдавате и контролирате всичко, което се случва и кога се случва!
Ясно е, че би било хубаво да се направи нещо друго едновременно с чакането, докато GUI чака напрегнато. Например, би било логично и подходящо да използвате функциите на GUI, за да правите промени в показания прозорец или периодично да проверявате съдържанието на папки, устройства и т.н.
GUI контроли
Всеки е запознат с контролите, защото те могат да се използват за извършване на щраквания или промяна на състоянието на прозорец, което също е до известна степен контрола. Всички видове елементи, които могат да бъдат създадени с AutoIt, са изброени по-долу:
Следното е пример за един GUI прозорец, съдържащ контроли. Целта е само да покаже какво може да се създаде!

Контролите се създават с помощта на набора от функции GUICtrlCreate. На всеки създаден елемент се присвоява вътрешен IDControl ID, който се връща от функцията, която го е създала.
Необходимо е да запомните, че идентификаторътКонтрол ID :
- положително число
- Уникален е в системата
- Равен по стойност на контролния идентификатор, показван от AutoIt Window Info Tool.
Основни GUI функции
За да създадете GUI, е достатъчно да извикате няколко функции, представени накратко по-долу. Накратко, това е така, защото създаването на GUI непременно ще изисква набор от добре дефинирани контроли.
GUI скриптът трябва да включва файла с дефиниция на константи -GUIConstants.au3. Той дефинира променливите и константите, необходими за изпълнение на всеки GUI скрипт.
Например, да кажем, че искате да създадете прозорец, наречен "Hello World" с размер 200x100 пиксела. Тъй като прозорецът е създаден в скрито състояние, за да го покажете, трябва да промените състоянието му, указано от макроса @SW_SHOW, веднага след създаването му.
GUICreate("Hello World", 200, 100) GUISetState(@SW_SHOW) Sleep(2000)
След стартиране на този скрипт ще се появи прозорец, който ще изчезне след две секунди. Не много интересно. Е, нека сега добавим надпис и бутон OK в този прозорец. Текстът ще бъде добавен в точката с координати (30,10), а бутонът в точката (70,50), като ширината на бутона ще бъде 60 пиксела.
GUICreate("Здравей свят", 200, 100) GUICtrlCreateLabel("Здравей свят! Как си?", 30, 10) GUICtrlCreateButton("OK", 70, 50, 60) GUISetState(@SW_SHOW) Sleep(2000)
Вече много по-добре. Но как да накарате GUI да реагира на щраквания върху бутони? На товаключово място трябва да вземем решение как ще се обработват събитията. Има два варианта - използване на функциятаMessageLoop или функциятаOnEvent. Нека разгледаме и двата случая.
GUI режим за обработка на събития
Както споменахме по-горе, има два начина, но всъщност дваРежим за обработка на GUI събития: режимMessageLoop и режимOnEvent. И двата режима са само два различни начина за обработка на GUI събития. Избраният режим зависи от личните предпочитания и някои особености в предназначението на създадения GUI. И двата режима са абсолютноравни, но понякога единият от режимите е по-предпочитан от другия.
Режимът по подразбиране е MessageLoop. За да преминете към режим OnEvent, е необходимо следното извикване - Opt("GUIONEventMode", 1).
Режим за обработка на събития в цикъла на съобщенията (Messageloop)
В този режим скриптът основно остава в единичен цикъл, в който се извършва едно и също действие. Функцията GUIGetMsg се извиква в цикъла за проучване на GUI. Ако се случи събитие в периода от последното проучване, върнатата стойност на функцията GUIGetMsg ви позволява да получите информация за събитието. Такива събития могат да бъдат щракване на бутон, съобщение за затваряне на прозорец и т.н.
Тъй като сте в цикъл на анкета, трябва да се уверите, че анкетата, която се извършва с помощта на функцията GUIGetMsg, се извършва, въпреки това, доста често, в противен случай просто няма да можете да отговорите на всички събития!
Този режим е най-добър за онези GUI сценарии, при които самият интерфейс е най-важното нещо и всичко, което се изисква от скрипта, е да изчака и да обработва събития, които идват от небрежен потребител. :)
Вижте подробната страница за режима MessageLoop.
Режим OnEvent - Обработка на прекъсвания
В режим OnEvent, вместо постоянно анкетиране на GUI, се използва различен начин за реагиране на възникващи събития. Отговорът на GUI на събитие е COMPLETE, въпреки че временно спира текущата обработка на скрипта(прекъсване) и извикване на предварително създадени скриптови функции, чиято единствена цел е да обработват някакво събитие. След като обработката приключи, скриптът продължава работата, прекъсната от събитието.
Например, ако потребителят натисне бутона Button1, графичният потребителски интерфейс ще прекъсне текущата последователност от функции и ще извика предварително дефинираната функция, предназначена за обработка на събития, свързани с бутона Button1.
Веднага след като събитието Button1 завърши обработката, контролът се връща към точката на прекъсване и прекъснатото изпълнение на скрипта се възобновява. Този режим е подобен на начина, по който се обработват събитията във Visual Basic.
Този режим трябва да се използва в онези GUI сценарии, за които основното нещо не е графичният интерфейс, а тези задачи, които се изпълняват паралелно с GUI поддръжка.
Изпратете съобщение за грешка Ако откриете грешка в текста, изберете я с мишката и натиснете клавишната комбинация Ctrl + ENTER, въведете правилния текст без грешка.