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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    nibble74

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
     
    Русская справка есть у меня, только не слита с оригиналом. Если что надо я просто подставляю путь #include "C:\Program Files (x86)\AutoIt3\Help\Include\FileOperations.au3"
     

    Цитата:
    И ещё не пойму зачем GUICtrlCreateTreeViewItem если получаем обычный список "List"?

    Вот этот твой вопрос я не понял.
    Как же без GUICtrlCreateTreeViewItem ?
     
    Ну да ладно, вроде всё получилось вот так:

    Код:
    #include <File.au3>
    $aFileList = _FileListToArray(@ScriptDir, '*.iso', 1, False)
    If @error Then Exit
    $hGUI = GUICreate("", 537, 290, -1, -1, 0x00040000)
    $TreeView = GUICtrlCreateTreeView(15, 15, 505, 215, 0x0020 + 0x0200 + 0x1000, 0x00000200)
    Global $aID[$aFileList[0] + 1]
    For $i = 1 To $aFileList[0]
        $aID[$i] = GUICtrlCreateTreeViewItem($aFileList[$i], $TreeView)
    Next
    $Btn = GUICtrlCreateButton("Распаковать", 210, 234, 100, -1, 0x00800000)
     
    GUISetState(@SW_SHOW)
    While 1
        Switch GUIGetMsg()
            Case -3
                Exit
            Case $Btn
                $item = GUICtrlRead($TreeView)
                If $item = 0 Then
                    MsgBox(64, "Сообщение", "Нет выделенных", 0, $hGUI)
                Else
                    $text = GUICtrlRead($item, 1)
                    If $text == "" Then
                        MsgBox(16, "Ошибка", "Ошибка при поиске инфо о пункте", 0, $hGUI)
                    Else
                        ConsoleWrite('"' & @ScriptDir & '\' & StringRegExpReplace($text, '.iso', '') & '"')
                    EndIf
                EndIf
        EndSwitch
    WEnd
     

     
    Использую _FileListToArray в GUI список получается  с расширением, а в командах расширение буду убирать так StringRegExpReplace.
    Вообщем получается на выходе имя файла без расширения и без переноса строки.

    Всего записей: 17 | Зарегистр. 30-12-2013 | Отправлено: 06:57 08-08-2018
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    nibble74
    Цитата:
    Вот этот твой вопрос я не понял.
    Как же без GUICtrlCreateTreeViewItem ?  
    GUICtrlCreateList

    Цитата:
    а в командах расширение буду убирать так StringRegExpReplace.
    тут готовые регвыры
    а в FileOperations.au3 есть _FO_PathSplit для разделения на составляющие, чтобы получить имя без расширения. Опять же я не проверял на новой версии но на новой есть _PathSplit.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 19:39 08-08-2018 | Исправлено: AZJIO, 19:47 08-08-2018
    nibble74

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
     
    GUICtrlCreateList - понятно, сразу просто не учёл, что и так можно.
    RegExp - посмотрю.
    Спасибо.

    Всего записей: 17 | Зарегистр. 30-12-2013 | Отправлено: 20:51 08-08-2018
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Интересная вещь для подсветки кода на руборде. Ставится на 3 популярных браузера через плаг скриптов. Автоматически определяет код и подсвечивает его, скриншот там есть.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 01:15 09-08-2018
    tiger690

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А в чем преимущества AutoIT перед какой-нибудь обычной средой разработки?
    Например по сравнению с Microsoft Visual Studio?

    Всего записей: 1959 | Зарегистр. 16-04-2015 | Отправлено: 10:29 10-08-2018
    AZJIO



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

    Цитата:
    Microsoft Visual Studio
    Это же не язык. Подробнее...

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 13:42 10-08-2018 | Исправлено: AZJIO, 13:44 10-08-2018
    tiger690

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

    Цитата:
    Это же не язык.  

    Ну да: Visual Studio - это среда разработки для стандартных языков: С++, C# и что-то там еще.
     

    Цитата:
    Подробнее...

    Получается, AutoIT - это совокупность: язык программирования более высокого уровня + среда разработки для этого языка. Так?

    Всего записей: 1959 | Зарегистр. 16-04-2015 | Отправлено: 16:11 10-08-2018
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tiger690
    AutoIt - язык программирования, а средой разработки может быть любой текстовый редактор, хоть обычный блокнот Windows.
    Возьмите любой текстовый редактор, в котором есть подсветка синтаксиса кода, навигация по коду, автодополнение, в котором можно прикрутить запуск интерпретатора и компилятора, открытие документации, плюс консоль - вот вам и среда разработки.

    Всего записей: 6487 | Зарегистр. 28-01-2008 | Отправлено: 16:31 10-08-2018
    tiger690

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

    Цитата:
    AutoIt - язык программирования, а средой разработки может быть любой текстовый редактор

    А как же рисование окошек?
    AutoIT как я понял по описанию может создавать обычные окна графического интерфейса.
    Имея только редактор кода, без удобного средства для рисования окошек, - это будет не полноценная среда разработки.
    В AutoIT есть что-то для этого?

    Всего записей: 1959 | Зарегистр. 16-04-2015 | Отправлено: 17:13 10-08-2018 | Исправлено: tiger690, 17:14 10-08-2018
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tiger690
    Вы таки серьёзно? Какой-либо визуальный инструмент для рисования окон - всего лишь возможная часть среды разработки, удобная, но отнюдь не основополагающая. К слову, в Visual Studio и консольные приложения пишут...

    Цитата:
    В AutoIT есть что-то для этого?

    В шапке ссылка Инструменты.
     
    Добавлено:
    AZJIO
    Может быть, в шапку стоит добавить и ISN AutoIt Studio? И что-то ещё вроде было.

    Всего записей: 6487 | Зарегистр. 28-01-2008 | Отправлено: 17:53 10-08-2018
    tiger690

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

    Цитата:
    Вы таки серьёзно?

    В меру своего понимания.  
    Я понимаю что могу быть не прав, просто хочется разобраться.

    Всего записей: 1959 | Зарегистр. 16-04-2015 | Отправлено: 18:11 10-08-2018 | Исправлено: tiger690, 18:16 10-08-2018
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tiger690
    Насчёт шапки чуток поторопился, всё-таки уже какое-то время она местами подутратила актуальность. На оффоруме есть тема AutoIt GUI Creators (Designers), в первом сообщении есть список.
     
    Не знаю, кто как, лично мне по душе AkelPad, автодополнением не пользуюсь (в SciTE4AutoIt3 оно как-то жутко раздражало), но и GUI, в общем, делаю простенькие, лишний раз запустить и проверить не очень сложно.

    Всего записей: 6487 | Зарегистр. 28-01-2008 | Отправлено: 18:36 10-08-2018
    AZJIO



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

    Цитата:
    Я понимаю что могу быть не прав, просто хочется разобраться.  
    а я на секунду подумал, что пришёл знаток С++ потроллить...
    AutoIt3 позволяет легко написать программу, тут готовые функции с опциями, под капотом код С++ выполняет более сложные действия. Ну равносильно оттачиваешь функцию, на входе делаешь несколько параметров, а функция выдаёт результат. Человек может месяц трудится над функцией, и выложить, а людям остаётся вносить параметры и радоваться простоте.

    Цитата:
    А как же рисование окошек?  
    Это самая слабая часть кода, вписать элемент и задать его размеры и координаты это что-ли является верхом достижения? Лично я допустим пишу пол-дня функционал, чтобы потом за 2 секунду прилепить в гуи кнопку для запуска этого функционала, надеюсь понятно объяснил. Хотя да, есть вещи в гуи которые сложные, например листвью задействовать движок на полную, перетаскивание элементов, редактирование пунктов, связывание, но опять же рисовальщик окон этого не делает, он только задаёт координаты и размеры, позволяет перемещать элемент в окне (игрушка для детей), как будто ты заранее не знаешь где ты хочешь разместить кнопку.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 20:55 10-08-2018
    tiger690

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

    Всего записей: 1959 | Зарегистр. 16-04-2015 | Отправлено: 10:55 11-08-2018
    Skif_off

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

    Цитата:
     он только задаёт координаты и размеры, позволяет перемещать элемент в окне

    А стили?

    Всего записей: 6487 | Зарегистр. 28-01-2008 | Отправлено: 13:17 11-08-2018
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не много не по теме, но для програмеров может быть интересно, сделал тёмную тему для руборда, с обсуждением тут

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 15:52 11-08-2018
    YS555

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Коллеги!
    Потребовалось автоматизировать работу с неким "щедевром", который использует Java. Стандартными средствами контролы в его окнах не ловятся, спасибо хоть автор предусмотрел hot key на большинство контролов внутри окна, но все равно возникли проблемы:
    1. Внутри окна используется хот кей Ctrl+Enter для нажатия на кнопку внутри окна. Попытка использовать Send("^{Enter}") к успеху не приводит. Если еще какие-нибудь варианты
    2. Сама программа требует прав администратора т.е. при запуске ее идет запрос на подтверждение от UAC. Есть ли варианты обойти это без отключения UAC?
     

    Всего записей: 101 | Зарегистр. 20-02-2008 | Отправлено: 21:41 12-08-2018
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YS555
    1. Можно попробовать Control Viewer от Yashied (ru, en), она показывает побольше, или попробовать тупо кликать мышью с MouseClick(), только координаты подобрать. В загашнике лежит функция для пересчёта относительных координат окна в координаты экрана

    Код:
    ; Конвертирует клиентские координаты (GUI) в абсолютные координаты экрана (desktop)
    Func ClientToScreen($hWnd, ByRef $x, ByRef $y)
        Local $stPoint = DllStructCreate("int;int")
        DllStructSetData($stPoint, 1, $x)
        DllStructSetData($stPoint, 2, $y)
        DllCall("user32.dll", "int", "ClientToScreen", "hwnd", $hWnd, "ptr", DllStructGetPtr($stPoint))
        $x = DllStructGetData($stPoint, 1)
        $y = DllStructGetData($stPoint, 2)
        ; release Struct not really needed as it is a local
        $stPoint = 0
    EndFunc   ;==>ClientToScreen

    Кажется, из примеров в справке.
    2. С помощью планировщика или, если программе для работы реально не требуются права админа, то можно попробовать запуск с переменной среды __COMPAT_LAYER=RunAsInvoker, т.е.

    Код:
    #NoTrayIcon
     
    EnvSet('__COMPAT_LAYER', 'RunAsInvoker')
    Run(...)

    (если батникак, то как обычно с set, а вот VBScript лучше не использовать, т.к. переменная среды будет записана в реестр).

    Всего записей: 6487 | Зарегистр. 28-01-2008 | Отправлено: 05:00 13-08-2018
    YS555

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    Спасибо. Буду пробовать.

    Всего записей: 101 | Зарегистр. 20-02-2008 | Отправлено: 22:24 13-08-2018
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Хочу с таблицы символов (charmap.exe) захватить код выбранной буквы, как?
    1. не могу получить класс окна, не видит
    2. можно было бы с CharGridWClass, но ControlGetText не захватывает букву.
    3. Можно попробовать через эмуляцию кнопки "Выбрать", но это крайний случай

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 19:58 14-08-2018
       

    Страницы: 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