Показать полную графическую версию : Общие вопросы по AutoIt
bugmenotagain
15-07-2012, 13:35
После чтения основной справки появился вопрос, буду рад если вы на него подскажите ответ.
Есть в справке вот такой пример скрипта
#include <GUIConstants.au3>
$mainwindow = GUICreate("Hello World", 200, 100)
GUICtrlCreateLabel("Hello world! How are you?", 30, 10)
$okbutton = GUICtrlCreateButton("OK", 70, 50, 60)
$dummywindow = GUICreate("Dummy window for testing ", 200, 100)
GUISwitch($mainwindow)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg(1)
Select
Case $msg[0] = $okbutton
MsgBox(0, "GUI Event", "You pressed OK!")
Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $mainwindow
MsgBox(0, "GUI Event", "You clicked CLOSE on the main window! Exiting...")
ExitLoop
EndSelect
WEnd
$dummywindow = GUICreate("Dummy window for testing ", 200, 100)
создает ложное окошко? что оно делает если при его комментировании ничего не изменяется?
$msg = GUIGetMsg(1)
вызывает запрос о получении сообщений о событиях, 1 для массивов, но каких массивов если их не задано?
Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $mainwindow
как это переменую msg[0] без запроса о массивах приравняли к кнопке закрытия и запросу о массивах? и тем более что это за условие такое?
спасибо
Вы скачайте справку на русском языке (http://forum.oszone.net/post-1945634.html#post1945634), там по русски написано, что это тестовое окно и пример как GUISwitch делает указанное окно текущим.
Прочтите описание GUIGetMsg и станет понятным что $msg = GUIGetMsg(1) это массив.
bugmenotagain
15-07-2012, 14:35
что это тестовое окно »
там написано для чего оно и почему его не видно?
bugmenotagain
15-07-2012, 15:20
кажется разобрался с тест окном
bugmenotagain
22-07-2012, 16:18
почему такой код
$asResult = StringRegExp("Это тестовый пример", '(тест)', 1)
If @error == 0 Then
MsgBox(0, "SRE, пример 4", $asResult[0])
EndIf
$asResult = StringRegExp("Это тестовый пример", '(те)(ст)', 1)
If @error == 0 Then
MsgBox(0, "SRE, пример 4", $asResult[0] & ",," & $asResult[1])
EndIf
выдает во 2м сообщении "те,,те", а вот такой
$asResult = StringRegExp("Это тестовый пример", '(тест)', 1)
If @error == 0 Then
MsgBox(0, "SRE, пример 4", $asResult[0])
EndIf
$asResult = StringRegExp("Это тестовый пример", '(те)(ст)', 1)
If @error == 0 Then
MsgBox(0, "SRE, пример 4", $asResult[0] & ",," & $asResult[0])
EndIf
выдает во 2м сообщении "те,,ст"
$asResult[0] это типа возврат без массива, но разве "ст" это массив?
и почему такой код
$asResult = StringRegExp("Были 18 листов оставшихся в пачке бумаги.", '([0-9]{1,3})', 0)
If @error == 0 Then
MsgBox(0, "SRE, пример 5", $asResult[0])
EndIf
выдает ошибку?
flag [опционально] = Указывает функции, хотите ли вы узнать найдено совпадение по шаблону или нет, или вы хотите получить первое совпадение с шаблоном, или вы хотите получить все совпадения с шаблоном в тексте "test".
ну вот ставлю 0, а не получаю первое совпадение, в чем косяк?
bugmenotagain
22-07-2012, 16:35
вот здесь тоже не работает flag
$asResult = StringRegExp("Вы использовали 36 из 279 страниц.", '([0-9]{1,3})(?: страниц)', 0)
If @error == 0 Then
MsgBox(0, "SRE, пример 6", $asResult[0])
EndIf
$asResult = StringRegExp("15, 16, 17", '([0-9]{1,2})', 0)
If @error == 0 Then
MsgBox(0, "SRE, пример 6", $asResult[0])
EndIf
если писать так StringRegExp("15, 16, 17", '([0-9]{1,2})', 0), то я "хочу получить все совпадения с шаблоном в тексте "15, 16, 17""
но вылазит ошибка, почему?
я хочу чтобы числа 15, 16 и 17 выводились в сообщении
$asResult = StringRegExp("15, 16, 17", '([0-1]{1,2})', 0)
If @error == 0 Then
MsgBox(0, "SRE, пример 6", $asResult[0])
EndIf
как мне это сделать если StringRegExp("15, 16, 17", '([0-1]{1,2})', 0) не работает?
bugmenotagain
22-07-2012, 16:51
вот даже простую строку пишу
MsgBox(0, "SRE, пример 6", StringRegExp("151617 после 111", '1', 1))
вылазит пустое окошко, это как понимать?
в чем различие между $asResult[0] и $asResult[1], это че второе выдает просто совпадение, а второе массив? или как вообще? в справке не могу найти описание этой непонятной фичи
вот даже простую строку пишу
« скрыть
MsgBox(0, "SRE, пример 6", StringRegExp("151617 после 111", '1', 1))
вылазит пустое окошко, это как понимать? »
Это естественно, Возвращаемое значение не массив
в чем различие между $asResult[0] и $asResult[1], это че второе выдает просто совпадение, а второе массив? »
$asResult[0] первый элемент массива, $asResult[1] второй и т.д.
bugmenotagain
22-07-2012, 17:25
чем $msg[0] отличается от $msg[1] ?
первое это переменная сообщения, а второе тоже самое но в массиве?
вот тут
#include <GUIConstantsEx.au3>
$mainwindow = GUICreate("Привет Мир", 200, 100)
GUICtrlCreateLabel("Привет Мир! Как дела?", 30, 10)
$okbutton = GUICtrlCreateButton("OK", 70, 50, 60)
$dummywindow = GUICreate("Dummy window for testing ", 200, 100)
GUISwitch($mainwindow)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg(1)
Select
Case $msg[0] = $okbutton
MsgBox(0, "Событие GUI", "Вы нажали OK!")
Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $mainwindow
MsgBox(0, "Событие GUI", "Вы нажали ЗАКРЫТЬ в главном окне! Завершаем...")
ExitLoop
EndSelect
WEnd
почему не работает так?
Case $msg[1] = $GUI_EVENT_CLOSE And $msg[1] = $mainwindow
я не могу понять суть, объясните пожалста, в справку не отправляйте, я это там и нашел, просто она рассчитана на программистов, коим я не являюсь.
вот возвращаемый массив
$array[0] = 0 или ID-события или идентификатор элемента управления
$array[1] = Дескриптор окна события
$array[2] = Указатель элемента события (если имеется)
$array[3] = Текущая X-координата курсора мыши (относительно GUI-окна)
$array[4] = Текущая Y-координата курсора мыши (относительно GUI-окна)
msg - этот самый массив и есть
bugmenotagain
22-07-2012, 17:38
$asResult[0] первый элемент массива, $asResult[1] второй и т.д. »
не похоже, вот так пробую
$asResult = StringRegExp("Были 18 листов и 19 листов оставшихся в пачке бумаги", '([0-9]{1,3})', 1)
If @error == 0 Then
MsgBox(0, "SRE, пример 5", $asResult[0] & "," & $asResult[1])
EndIf
и не канает, должно быть так "18, 19", а выходит ошибка
потому-что у вас флаг 1 и возвращается массив из одного элемента, то есть только $asResult[0]
сделайте флаг 3 и будет работать
bugmenotagain
22-07-2012, 17:50
сделайте флаг 3 и будет работать »
все понятно, спасибо.
$array[1] = Дескриптор окна события »
$GUI_EVENT_CLOSE это разве не спец значение, которое операционная система присваивает каждому создаваемому окну?
чет запутался совсем, я думал это просто кнопка
$GUI_EVENT_CLOSE находится в msg[0] - в данном случае это ID-события
bugmenotagain
23-07-2012, 10:39
$GUI_EVENT_CLOSE находится в msg[0] »
если писать msg[0] то скрипт не работает :(
если писать msg[0] то скрипт не работает »
покажите скрипт
bugmenotagain
24-07-2012, 06:13
ferget, http://forum.oszone.net/post-1956651-9.html
вопрос о "$GUI_EVENT_CLOSE" и о том как написать $msg[0] = $GUI_EVENT_CLOSE или $msg[1] = $GUI_EVENT_CLOSE
то, что $msg[0] это ID события или идентификатор элемента управления понятно, ну и $msg[1] дескриптор окна события тоже ясно.
то, что $msg[0] это ID события или идентификатор элемента управления понятно, ну и $msg[1] дескриптор окна события тоже ясно. »
А что не понятно?
если писать msg[0] то скрипт не работает »
скрипт из #2 работает
bugmenotagain
24-07-2012, 11:01
ferget, да все, вопросов пока не осталось. спасибо.
радует, что люди помогают осваивать новый для меня язык.
bugmenotagain
28-07-2012, 19:33
Делаю простой скрипт по примеру
#include <StaticConstants.au3>
GUICreate ( "Окно с фоном", 350, 250, -1, -1, -1, -1)
Local $background
Local $sFile = @ScriptDir & "444.jpg"
$background = GUICtrlCreatePic(@ScriptDir & "444.jpg", 0, 0, 0, 0, -1, $WS_EX_LAYERED)
GuiCtrlSetState(-1, $background)
GUISetState(@SW_SHOW)
Sleep ( 2000 )
выдается ошибка на "$WS_EX_LAYERED", как решить посоветуете?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC