Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)

Модерирует : gyra, Maz

gyra (23-01-2020 10:51): AutoIT (Часть 4)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Описание:

Цитата:
AutoIt v3 - это язык для написания сценариев, напоминающий BASIC. Основным его назначением является автоматизация работ с Windows GUI (графическим интерфейсом пользователя MS Windows). Для выполнения этой сложной задачи предоставляется комбинация испытанных методов, включающих в себя эмуляцию нажатий комбинаций клавиш клавиатуры, перемещения указателя мыши, управление окнами и их визуальными элементами. Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях, когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны.
Умеет он очень и очень многое! Бесплатный.

 
  • Справки
  • Инструменты
  • Ресурсы, посвящённые AutoIt
  • Полезные советы новичкам и не только
  • Готовые решения
  • Скрипт раскраски кода AutoIt для публикации в форумах
     


     
    За шапкой следит ViSiToR / AZJIO  

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 13:07 01-06-2010 | Исправлено: Maz, 12:29 10-01-2020
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, возник вопрос по работе с датой в AutoIt.
    Алгоритм простой:
    1. Узнаём текущую дату и записываем ее в переменную.
    2. Устанавливаем необходимую дату.
    3. Выполняем любое действие.
    4. Возвращаем текущую дату.
    Собственно и всё, буду признателен любому ценному совету!

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 10:56 23-09-2015
    jFobos



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Код:
    #include <GUIConstantsEx.au3>
    #include <Date.au3>
     
    Global $sYEAR = @YEAR, $sMON = @MON, $sMDAY = @MDAY, $fChange, _
            $iStart = TimerInit()
     
    GUICreate('Test', 213, 109)
    $nDate = GUICtrlCreateDate('', 8, 45, 194, 21)
    GUICtrlSendMsg(-1, 0x1032, 0, 'dd.MM.yyyy')
    $nLabel = GUICtrlCreateLabel('Текущая дата (' & @MDAY & '.' & @MON & '.' & @YEAR & _
            '), вы можете ' & @CRLF & ' поменять. Выберите нужную дату:', 8, 8, 374, 35)
    $nButton1 = GUICtrlCreateButton('Поменять', 20, 72, 75, 25)
    $nButton2 = GUICtrlCreateButton('Отмена', 110, 72, 75, 25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState()
     
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                If $fChange Then
                    If MsgBox(33, 'Question', 'Вернуть начальную дату?') = 1 Then
                        _Date_Back()
                    EndIf
                EndIf
                Exit
            Case $nButton1
                $aDate = StringSplit(GUICtrlRead($nDate), '.')
                If $aDate[0] <> 3 Then ContinueLoop
                _SetDate($aDate[1], $aDate[2], $aDate[3])
                $fChange = True
                GUICtrlSetState($nButton2, $GUI_ENABLE)
                GUICtrlSetData($nLabel, 'Текущая дата (' & @MDAY & '.' & @MON & '.' & @YEAR & _
                        '), вы можете ' & @CRLF & ' поменять. Выберите нужную дату:')
            Case $nButton2
                _Date_Back()
                GUICtrlSetData($nLabel, 'Текущая дата (' & @MDAY & '.' & @MON & '.' & @YEAR & _
                        '), вы можете ' & @CRLF & ' поменять. Выберите нужную дату:')
                GUICtrlSetData($nDate, '')
        EndSwitch
    WEnd
     
    Func _Date_Back()
        Local $s_Date_Back, $a_Split, $i_Diff = Round(TimerDiff($iStart) / 1000)
        $s_Date_Back = _DateAdd('s', $i_Diff, $sYEAR & '/' & $sMON & '/' & $sMDAY)
        $a_Split = StringSplit($s_Date_Back, '/')
        If $a_Split[0] = 3 Then
            _SetDate($a_Split[3], $a_Split[2], $a_Split[1])
            $fChange = False
        EndIf
    EndFunc   ;==>_Date_Back

    Всего записей: 452 | Зарегистр. 03-12-2007 | Отправлено: 11:33 23-09-2015
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jFobos
     
    Спасибо Вам большое, только вот графический интерфейс не нужен.

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 12:02 23-09-2015
    jFobos



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Artem_Butenko
    Думаю не проблема его убрать

    Всего записей: 452 | Зарегистр. 03-12-2007 | Отправлено: 17:11 23-09-2015 | Исправлено: jFobos, 17:11 23-09-2015
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    #include <GUIConstantsEx.au3>
    #include <Date.au3>
     
    Global $sYEAR = @YEAR, $sMON = @MON, $sMDAY = @MDAY, $fChange, _
            $iStart = TimerInit()
     
    GUICreate('Test', 213, 109)
    $nDate = GUICtrlCreateDate('', 8, 45, 194, 21)
    GUICtrlSendMsg(-1, 0x1032, 0, 'dd.MM.yyyy')
    $nLabel = GUICtrlCreateLabel('Текущая дата (' & @MDAY & '.' & @MON & '.' & @YEAR & _
            '), вы можете ' & @CRLF & ' поменять. Выберите нужную дату:', 8, 8, 374, 35)
    $nButton1 = GUICtrlCreateButton('Поменять', 20, 72, 75, 25)
    $nButton2 = GUICtrlCreateButton('Отмена', 110, 72, 75, 25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState()
     
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                If $fChange Then
                    If MsgBox(33, 'Question', 'Вернуть начальную дату?') = 1 Then
                        _Date_Back()
                    EndIf
                EndIf
                Exit
            Case $nButton1
                $aDate = StringSplit(GUICtrlRead($nDate), '.')
                If $aDate[0] <> 3 Then ContinueLoop
                _SetDate($aDate[1], $aDate[2], $aDate[3])
                $fChange = True
                GUICtrlSetState($nButton2, $GUI_ENABLE)
                GUICtrlSetData($nLabel, 'Текущая дата (' & @MDAY & '.' & @MON & '.' & @YEAR & _
                        '), вы можете ' & @CRLF & ' поменять. Выберите нужную дату:')
            Case $nButton2
                _Date_Back()
                GUICtrlSetData($nLabel, 'Текущая дата (' & @MDAY & '.' & @MON & '.' & @YEAR & _
                        '), вы можете ' & @CRLF & ' поменять. Выберите нужную дату:')
                GUICtrlSetData($nDate, '')
        EndSwitch
    WEnd
     
    Func _Date_Back()
        Local $s_Date_Back, $a_Split, $i_Diff = Round(TimerDiff($iStart) / 1000)
        $s_Date_Back = _DateAdd('s', $i_Diff, $sYEAR & '/' & $sMON & '/' & $sMDAY)
        $a_Split = StringSplit($s_Date_Back, '/')
        If $a_Split[0] = 3 Then
            _SetDate($a_Split[3], $a_Split[2], $a_Split[1])
            $fChange = False
        EndIf
    EndFunc   ;==>_Date_Back  

     
    Немного не понимаю логику скрипта, каким образом убрать GUI?
     
    Требуется лишь простая последовательность действий:

    Цитата:
    1. Узнаём текущую дату и записываем ее в переменную.
    2. Устанавливаем необходимую дату.
    3. Выполняем любое действие.
    4. Возвращаем текущую дату.  


    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 15:41 24-09-2015 | Исправлено: Artem_Butenko, 15:46 24-09-2015
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Artem_Butenko

    Код:
    #NoTrayIcon
    #include <Date.au3>
     
    Global $sYEAR = @YEAR, $sMON = @MON, $sMDAY = @MDAY
    Local $sDate, $aDate
     
    $sDate = '2010.10.19'
    $aDate = StringSplit($sDate, '.')
    If $aDate[0] = 3 Then
        _SetDate($aDate[3], $aDate[2], $aDate[1])
    Else
        MsgBox(4096, @ScriptName, 'Неверно указана дата?' & @ & 'Должно быть в формате YYYY.MM.DD')
    EndIf
     
    ; любое действие
     
    _SetDate($sMDAY, $sMON, $sYEAR)

    ?

    Всего записей: 6489 | Зарегистр. 28-01-2008 | Отправлено: 17:17 24-09-2015 | Исправлено: Skif_off, 17:17 24-09-2015
    5peciali5t



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    всем привет!
     
    не особо разбираюсь в программе, наскоро накидал GUI предстоящей утилиты в Form Builder
     
    скрин
     
    теперь предстоит ввести условия отметки/снятия галок в чекбоксах и вот тут что-то непонятно как сделать чтобы при снятии/установке галок с/на чекбоксах групп (office mondo / office proplus / office standard ) снимались/ставились галки с входящих в данные редакции приложений находящихся под заголовком названия редакции.
    также нужны условия: если кто то отмечает чекбокс, например, редакции proplus или любого приложения входящего в ее состав, сразу снимаются галочки со всех остальных редакций и входящих в них приложений.
     
    код
     
    файл

    ----------
    Intel Ci7-2600K 3.4@4.5 Ghz/GeForce GTX 550 Ti 1024Mb/240Gb SSD+9Tb HDD's/RAM 16 Gb DDR3 1600/23" ACER T231Hbmid Multi-Touch Sensor Display

    Всего записей: 1472 | Зарегистр. 17-07-2009 | Отправлено: 20:39 29-09-2015 | Исправлено: 5peciali5t, 20:39 29-09-2015
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    5peciali5t,
    Посмотрите здесь: GroupCheckBox - Создание группы элементов CheckBox

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 06:24 30-09-2015
    snoitaleR



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Почему-то скомпилированный и не скомпилированный скрипт выдают разные значения при указании параметра командной строки, равного 0...
    Скомпилированный скрипт выдаёт "Не равно", не скомпилированный - "Равно"...

    Код:
     
     If $CmdLine[1]=0 Then
      MsgBox(0,'','Равно')
     Else
      MsgBox(0,'','Не равно')
     EndIf
     

    В чём может быть ошибка?

    Всего записей: 88 | Зарегистр. 23-02-2005 | Отправлено: 18:41 30-09-2015
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    snoitaleR
    Скорее всего проблема в типах данных.

    Код:
    If $CmdLine[1]="0" Then
      MsgBox(0,'','Равно')
     Else
      MsgBox(0,'','Не равно')
    EndIf  

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 18:56 30-09-2015
    snoitaleR



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Я просто пытаюсь понять, как компиляция скрипта может повлиять на трактование типов данных...
    Кстати, если в качестве параметра взять, к примеру, 1, то и скомпилированный и не скомпилированный скрипт выдают "Равно"...

    Всего записей: 88 | Зарегистр. 23-02-2005 | Отправлено: 19:47 30-09-2015
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    snoitaleR
    Нескомпилированны скрипт зарускается из SCITE и просто выполняя его по разному, вот маленький тестик на ком. строку
     

    Код:
    MsgBox(16, @ScriptName, "Test :" & @CRLF & @ScriptName & " " & $CmdLineRaw)

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 20:42 30-09-2015
    snoitaleR



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Да, $CmdLineRaw для скомпилированных скриптов возвращает только параметры (без имени скрипта), но я думаю, что есть какая-то проблема в обработке именно 0, так как параметр 1 обработался одинаково...

    Всего записей: 88 | Зарегистр. 23-02-2005 | Отправлено: 21:29 30-09-2015
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    snoitaleR

    Цитата:
    так как параметр 1 обработался одинаково...

    Это естественно, 1 или "1" не есть 0, а вот "0" и 0 отличаются, а через параметр передается символьная строка, сравнивать ее с числом просто некорректно. Да просто для теста выведи MsgBox(16, @ScriptName, "Test :" & @CRLF & @ScriptName & " *" & $CmdLine[1] & "*" ) и посмотри различия.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 22:14 30-09-2015 | Исправлено: NIKZZZZ, 22:21 30-09-2015
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    snoitaleR

    Цитата:
    скрипт выдают разные значения при указании параметра командной строки, равного 0
    ИМХО, можно проверять тип строки функциями StringIs* и, если, например, только цифры, преобразовывать в число функцией Number().

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 06:48 01-10-2015
    snoitaleR



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Данный пример демонстрирует отношение AUTOIT'a к совместимым типам данных:

    Код:
     
     If "123"=123 Then
      MsgBox(0,'','Равно')
     Else
      MsgBox(0,'','Не равно')
     EndIf
     If "0.5"=0.5 Then
      MsgBox(0,'','Равно')
     Else
      MsgBox(0,'','Не равно')
     EndIf
     

    Мне кажется, что проблема связана непосредственно с ошибкой в обработчике командной строки...
     
    madmasles
    Согласен, обойти проблему можно именно так, но я бы хотел услышать мнение о том, есть ли ошибка в самом интерпретаторе AUTOIT'a...

    Всего записей: 88 | Зарегистр. 23-02-2005 | Отправлено: 20:36 01-10-2015
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    snoitaleR

    Цитата:
    есть ли ошибка в самом интерпретаторе  

    Не думаю, autoit автоматом преобразует типы данных, там есть свои приоритеты, например

    Код:
    If "123.0"=123 Then
    преобразует "123.0" в число 123 и будет сравнивать числа, хотя мог-бы и преобразовать 123 в строку "123", результат был-бы другой. В большинстве случаев такой автомат может однозначно определить, как преобразовать типы, но не в данном случае.
    Данное выражение просто некорректно, сначала нужно указать , какие типы данных сравниваются, и только потом выполнять сравнение.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 21:39 01-10-2015
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    snoitaleR

    Цитата:
    Почему-то скомпилированный и не скомпилированный скрипт выдают разные значения при указании параметра командной строки, равного 0
    А это в новой версии появилось? Думаю можно считать багом. ком-строка должна быть строковым типом при любых обстаятельствах, а тем более баг зависеть от компиляции. Пути путями, это да, но полезная часть строки должна интерпретироваться одинаково.

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 18:52 03-10-2015
    snoitaleR



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    У меня сейчас 3.3.14.2... Я стараюсь придерживаться последней стабильной версии...

    Всего записей: 88 | Зарегистр. 23-02-2005 | Отправлено: 21:48 03-10-2015
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    snoitaleR

    Цитата:
    У меня сейчас 3.3.14.2

    У меня скомпилированная и не скомпилированная версии работают одинаково.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 02:07 04-10-2015
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)
    gyra (23-01-2020 10:51): AutoIT (Часть 4)


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru