Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Общие вопросы по AutoIt (http://forum.oszone.net/showthread.php?t=238616)

bugmenotagain 15-07-2012 13:35 1952120

Общие вопросы по AutoIt
 
После чтения основной справки появился вопрос, буду рад если вы на него подскажите ответ.
Есть в справке вот такой пример скрипта
читать дальше »
Код:

#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] без запроса о массивах приравняли к кнопке закрытия и запросу о массивах? и тем более что это за условие такое?
спасибо

AZJIO 15-07-2012 13:55 1952127

Вы скачайте справку на русском языке, там по русски написано, что это тестовое окно и пример как GUISwitch делает указанное окно текущим.
Прочтите описание GUIGetMsg и станет понятным что $msg = GUIGetMsg(1) это массив.

bugmenotagain 15-07-2012 14:35 1952139

Цитата:

Цитата AZJIO
что это тестовое окно »

там написано для чего оно и почему его не видно?

bugmenotagain 15-07-2012 15:20 1952152

кажется разобрался с тест окном

bugmenotagain 22-07-2012 16:18 1956593

почему такой код
читать дальше »

$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 1956610

вот здесь тоже не работает 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 1956632

вот даже простую строку пишу
читать дальше »
MsgBox(0, "SRE, пример 6", StringRegExp("151617 после 111", '1', 1))

вылазит пустое окошко, это как понимать?

в чем различие между $asResult[0] и $asResult[1], это че второе выдает просто совпадение, а второе массив? или как вообще? в справке не могу найти описание этой непонятной фичи

ferget 22-07-2012 17:23 1956650

Цитата:

Цитата bugmenotagain
вот даже простую строку пишу
« скрыть
MsgBox(0, "SRE, пример 6", StringRegExp("151617 после 111", '1', 1))
вылазит пустое окошко, это как понимать? »

Это естественно, Возвращаемое значение не массив

Цитата:

Цитата bugmenotagain
в чем различие между $asResult[0] и $asResult[1], это че второе выдает просто совпадение, а второе массив? »

$asResult[0] первый элемент массива, $asResult[1] второй и т.д.

bugmenotagain 22-07-2012 17:25 1956651

чем $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
я не могу понять суть, объясните пожалста, в справку не отправляйте, я это там и нашел, просто она рассчитана на программистов, коим я не являюсь.

ferget 22-07-2012 17:37 1956663

вот возвращаемый массив
$array[0] = 0 или ID-события или идентификатор элемента управления
$array[1] = Дескриптор окна события
$array[2] = Указатель элемента события (если имеется)
$array[3] = Текущая X-координата курсора мыши (относительно GUI-окна)
$array[4] = Текущая Y-координата курсора мыши (относительно GUI-окна)

msg - этот самый массив и есть

bugmenotagain 22-07-2012 17:38 1956664

Цитата:

Цитата ferget
$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", а выходит ошибка

ferget 22-07-2012 17:41 1956668

потому-что у вас флаг 1 и возвращается массив из одного элемента, то есть только $asResult[0]

сделайте флаг 3 и будет работать

bugmenotagain 22-07-2012 17:50 1956674

Цитата:

Цитата ferget
сделайте флаг 3 и будет работать »

все понятно, спасибо.
Цитата:

Цитата ferget
$array[1] = Дескриптор окна события »

$GUI_EVENT_CLOSE это разве не спец значение, которое операционная система присваивает каждому создаваемому окну?
чет запутался совсем, я думал это просто кнопка

ferget 22-07-2012 20:14 1956757

$GUI_EVENT_CLOSE находится в msg[0] - в данном случае это ID-события

bugmenotagain 23-07-2012 10:39 1957023

Цитата:

Цитата ferget
$GUI_EVENT_CLOSE находится в msg[0] »

если писать msg[0] то скрипт не работает :(

ferget 23-07-2012 17:22 1957296

Цитата:

Цитата bugmenotagain
если писать msg[0] то скрипт не работает »

покажите скрипт

bugmenotagain 24-07-2012 06:13 1957587

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] дескриптор окна события тоже ясно.

ferget 24-07-2012 07:09 1957603

Цитата:

Цитата bugmenotagain
то, что $msg[0] это ID события или идентификатор элемента управления понятно, ну и $msg[1] дескриптор окна события тоже ясно. »

А что не понятно?

Цитата:

Цитата bugmenotagain
если писать msg[0] то скрипт не работает »

скрипт из #2 работает

bugmenotagain 24-07-2012 11:01 1957711

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

радует, что люди помогают осваивать новый для меня язык.

bugmenotagain 28-07-2012 19:33 1960686

Делаю простой скрипт по примеру
читать дальше »

#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", как решить посоветуете?

Iska 28-07-2012 20:18 1960710

Как Вы думаете, если в:
Цитата:

Цитата bugmenotagain
Код:

#include <StaticConstants.au3>
»

нет такой константы, как «$WS_EX_LAYERED», а есть в:
Код:

╔═══════════════════════════════════════════ Поиск файла: *.au3 ═══════════════════════════════════════════╗
║  C:\Program Files\AutoIt3\Include\                                                                      ║
║  07.03.2010│    371.14 К│R  A      │WinAPI.au3                                                        ║
║  07.03.2010│      23.33 К│R  A      │WindowsConstants.au3                                              ║
║                                                                                                          ║

то что нужно сделать?

bugmenotagain 28-07-2012 20:32 1960719

Iska, понял спасибо, остался второй вопрос, что неверного в задании фоновой картинки? ее просто нет в создаваемом "Окно с фоном"

Iska 28-07-2012 20:42 1960722

Цитата:

Цитата bugmenotagain
что неверного в задании фоновой картинки?
»

Цитата:

@ScriptDir
Directory containing the running script. (Result does not contain a trailing backslash)
bugmenotagain, Вы теперь будете любые свои вопросы задавать в персональной теме?

bugmenotagain 28-07-2012 20:50 1960724

Iska, спасибо еще раз.
в какой теме посоветуете задавать вопросы?

Iska 28-07-2012 21:36 1960744

Цитата:

Цитата bugmenotagain
в какой теме посоветуете задавать вопросы? »

В заголовке раздела AutoIt есть прикреплённое объявление: FAQ по размещению и поиску информации на конференции OSZone.net. Прочтите его.

bugmenotagain 01-08-2012 16:40 1962865

Iska, не нашел подходящей темы для следующего вопроса, неужели нужно плодить новую тему?

в этом примере
читать дальше »

For $i= 1 To 10
$var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE", $i)
If @error Then ExitLoop
MsgBox(4096, "Подраздел №" & $i & " в разделе HKLM\Software: ", $var)
Next

нужно чтобы 10 значений выводились не в сообщениях, а в списке. такое возможно?

я так понимаю нужен GUICtrlCreateList и в него затолкать массив, но как?

Iska 01-08-2012 18:18 1962927

Цитата:

Цитата bugmenotagain
Iska, не нашел подходящей темы для следующего вопроса, неужели нужно плодить новую тему? »

Если сомневаетесь в корректном истолковании Правил, уточните у Администрации или Модератора раздела.

ferget 02-08-2012 12:24 1963371

Цитата:

Цитата bugmenotagain
нужно чтобы 10 значений выводились не в сообщениях, а в списке. такое возможно?
я так понимаю нужен GUICtrlCreateList и в него затолкать массив, но как? »

GUICtrlSetData в цикле

Creat0R 02-08-2012 17:53 1963607

Тема закрыта, т.к нарушает несколько правил форума одновременно.


Время: 12:17.

Время: 12:17.
© OSzone.net 2001-