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

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



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

    Цитата:
    Подключение по локальной сети, Подключение по локальной сети 2, имена PPP, PPPoE, VPN соединений  

     на офф.форуме нашел только через ipconfig...
    хотя что-то мне подсказывает, можно и из реестра выдернуть...
     

    Всего записей: 386 | Зарегистр. 02-11-2007 | Отправлено: 11:19 23-07-2010
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Dmitri_Andreev
    Вот ссылка на ScriptOmatic.au3.
    Там много интересного.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 12:42 23-07-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Обновил генератор мелодий в двух вариантах, особенно для MIDI.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 20:02 24-07-2010
    Zloy_Gelud



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Возможно ли решить такую задачу:  
    1) сделать копию ветки реестра со всеми значениями
    2) через некоторое время сделать повторную копию этой ветки
    3) сравнить их на предмет изменения  записей (добавление, удаление, изменение)

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 20:38 24-07-2010
    Zloy_Gelud



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    $s= 'text = "text1(text2)";'
     
    Как вырезать в этом примере то, что находиться в кавычках, т.е. text1(text2) ?

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 23:10 24-07-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zloy_Gelud
    $s = StringSplit('text = "text1(text2)";', '"')
    MsgBox(0, 'Сообщение', $s[2])

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 06:28 25-07-2010 | Исправлено: AZJIO, 06:36 25-07-2010
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zloy_Gelud
    Можно еще так попробовать:
    Код:
    $sString = 'text = "text1(text2)";'
    ; 1-ый вариант:
    $sResult = StringRegExpReplace($sString, '(?s).*?\Q"\E(.*?)\Q"\E.*', '\1')
    MsgBox(0, '1-Найдено:', $sResult)
    ; 2-ой вариант:
    $aResult = StringRegExp($sString, '"(.*?)"', 3)
    If IsArray($aResult) Then
        MsgBox(0, '2-Найдено:', $aResult[0])
    Else
        MsgBox(0, 'NO', 'NO')
    EndIf
    ; 3-ий вариант:
    $sRes = StringMid($sString, StringInStr($sString, '"', 0, 1) + 1, StringInStr($sString, '"', 0, 2) - _
    StringInStr($sString, '"', 0, 1) - 1)
    MsgBox(0, '3-Найдено:', $sRes)

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 07:52 25-07-2010 | Исправлено: madmasles, 08:14 25-07-2010
    Zloy_Gelud



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    A не подскажите еще как заменить определенные слова в строке на другие?

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 09:33 25-07-2010
    madmasles

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

    Код:
    $sString = 'text = "text1(text2)";'
    $sWordOld = 'text'
    $sWordNew = 'click'
    $sResult = StringReplace($sString, $sWordOld, $sWordNew)
    MsgBox(0, '', 'Old: ' & $sString & @CRLF & 'New: ' & $sResult)

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 10:33 25-07-2010 | Исправлено: madmasles, 10:39 25-07-2010
    AZJIO



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

    Цитата:
    Возможно ли решить такую задачу:

    Слишком объёмный вопрос, решить можно, а можно взять готовую бесплатную программу regshot (с исходниками).

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 11:11 25-07-2010
    Kiev78

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

    Цитата:
    Возможно ли решить такую задачу:

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

    Всего записей: 244 | Зарегистр. 17-06-2006 | Отправлено: 12:19 25-07-2010
    assch11

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.Не подскажете
    Можно ли средствами Autoit из формата - PNG - сделать формат - ICO
    Я понимаю что для этого есть другие программы  
    Просто нужно именно на Autoit.
    Если можно пример как это делается.

    Всего записей: 1 | Зарегистр. 08-05-2010 | Отправлено: 23:49 25-07-2010 | Исправлено: assch11, 23:59 25-07-2010
    Zloy_Gelud



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Возможно я плохо объяснил тогда, но мне нужно немного другое..

    Код:
    $sKeywords = 'function,if,and,or,then,while,repeat,end,until,else,elseif,local,in,do,for'
    $aKeywords = StringSplit($sKeywords, ",")
    $sText = 'for i, strPageName in pairs(tPages) do'

    Необходимо заменить слова в строке $sText, которые имеются в массиве $aKeywords, т.е. только слова for, in, do, а не части слов, в которых присутствуют for, in, do.
    Также, например, в строке 'strVar = var_for_table;' - слово 'for' заменять не надо, т.к. оно является частью слова 'var_for_table'.
    А в строке 'XXX=function()', слово 'function' заменить надо и т.п.


    Kiev78

    Цитата:
    [...]есть специализированные программы[...]

    Я знаю, что они есть, но желательно средствами AutoIt.

    Цитата:
    [...] regedit с ключами командной строки.

    Если ты про команду reg, то она не имеет таких параметров, которые сравнят две копии ветки реестра. Или я плохо смотрел?


    AZJIO
    RegShot - программа дельная, и я всегда ее раньше использовал для подобных нужд, но сейчас появилась необходимость автоматизировать процесс сравнения копий веток реестра.
    P.S. RegShot ведь не поддерживает параметры командной строки?

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 11:39 26-07-2010
    Kiev78

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

    Цитата:
    Если ты про команду reg, то она не имеет таких параметров, которые сравнят две копии ветки реестра. Или я плохо смотрел?  

    Она сделает тебе снимки - а сравнивать ты можешь уже средствами АвтоИТа (ты ведь в нём хочешь всё делать), или использовать другой софт (чисто для сравнения).

    Всего записей: 244 | Зарегистр. 17-06-2006 | Отправлено: 12:19 26-07-2010 | Исправлено: Kiev78, 12:21 26-07-2010
    Kastermight



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zloy_Gelud
    1. Заменить на что?
    2. Я бы рекомендовал выделить в отдельные переменные ключевые слова, которые отделяются от других пробелами (do, while, for) и те, которые отделяются знаками "=", "(" и ")" (function). Думаю, что можно всю эту конструкция и в один регвыр засунуть, но логика выражения заметно усложниться, так же как и понимание. Лучше составить по регвыру для каждой группы ключевых слов и пройтись отдельными StringRegExpReplace'ами по каждому из них.
     
    Добавлено:
    К примеру вот так можно

    Код:
    $sKeywords = 'function,if,and,or,then,while,repeat,end,until,else,elseif,local,in,do,for'
    $sKeywords = StringReplace($sKeywords, ',', '|'); Ключевые слова разделять лучше "|", т.к. этот символ является оператором условия в регвырах
    $sChange = "*magic_word*"; Слово на которое нужно заменить каждое из найденных ключевых слов
    Dim $sText[3]
    $sText[0] = 'for i, strPageName in pairs(tPages) for do while'
    $sText[1] = 'strVar = var_for_table; but this for else while '
    $sText[2] = 'function() XXX=function() but for do while _not_change_function function'
     
    $sPattern1 = "^(" & $sKeywords & ")([\s\(])"; Шаблон поиска ключевых слов в начале строки
    $sPattern2 = "([\s\=])(" & $sKeywords & ")([\s\(])"; Шаблон поиска ключевых слов в середине строки
    $sPattern3 = "([\s\=])(" & $sKeywords & ")$"; Шаблон поиска ключевых слов в конце строки
    For $i = 0 to 2
            Do
                $sText[$i] = StringRegExpReplace($sText[$i], $sPattern1, $sChange & "\2")
            Until Not @extended
            Do
                $sText[$i] = StringRegExpReplace($sText[$i], $sPattern2, "\1" & $sChange & "\3")
            Until Not @extended
            Do
                $sText[$i] = StringRegExpReplace($sText[$i], $sPattern3, "\1" & $sChange)
            Until Not @extended
            ; Все циклы проводятся пока все ключевые слова не будут заменены
        ConsoleWrite($sText[$i] & @CRLF)
    Next

    Всего записей: 23 | Зарегистр. 02-03-2009 | Отправлено: 12:51 26-07-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zloy_Gelud
    reg поддерживает сравнение из ком строки
    Код:
    reg compare имя_раздела_1 имя_раздела_2 /v имя_записи | ve| oa|od|os|on |s
    почитай в справке ключи вариантов вывода данных.
     
    На счёт реестра начни читать этой ссылки несколько страниц до момента создания скрипта.
     
    Сохрани предыдущую тему как "Версия для печати" и используй поиск по страничке.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 14:49 26-07-2010
    Zloy_Gelud



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

    Код:
    $sSimv = '\.|\=|\/|\*|\-|\+|\<|\>|\~|\,|\[|\]|\{|\}'
    $sKeywords = 'function|if|and|or|then|while|repeat|end|until|else|elseif|local|in|do|for'
    $s = 'OnJump = function() do'
     
    $s = StringRegExpReplace($s, '^('&$sKeywords&')[\s\(\)\;'&$sSimv&']', '##bC##$1##C## ')
    $s = StringRegExpReplace($s, '[\s'&$sSimv&']('&$sKeywords&')[\s\(\)\;'&$sSimv&']', ' ##bC##$1##C## ')
    $s = StringRegExpReplace($s, '[\s\(\)\;'& $sSimv &'](' & $sKeywords & ')$', ' ##bC##$1##C##')  
     
    MsgBox(0,"",$s)

    Почему в скрипте обрезается открывающаяся круглая скобка ( ? Возможно это как=то пофиксить? [разобрался*]


    AZJIO

    Цитата:
    reg поддерживает сравнение из ком строки

    Я знаю. Поддерживает сравнение двух разделов реестра. Но не сравнит 2 REG или HIVE файла.

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 19:44 26-07-2010 | Исправлено: Zloy_Gelud, 21:37 26-07-2010
    AZJIO



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

    Цитата:
    Но не сравнит 2 REG или HIVE файла.
    копируй раздел в другой раздел и сравнивай последующие изменения. Команда копирования у reg тоже есть.
     
    Обновил калькулятор, добавил поддержку языковых файлов lng, возможность открывать файлы расширенной памяти, соответственно иметь их сколько угодно. Добавил защиту-индикатор, для действий "на 0 делить нельзя" и "корень отрицательного числа". Исправил ошибку на двух кнопках, когда переменные с числами воспринимаются как текстовые.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 21:52 26-07-2010 | Исправлено: AZJIO, 05:57 27-07-2010
    opt_step



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

    Цитата:
    RegDelete('HKEY_CURRENT_USER\Software\Microsoft\DrWatson')

    как сделать, чтобы он повторялся в цикле каждые 10 мин и при нажатии клавиши выгружался из процессов?

    Всего записей: 11230 | Зарегистр. 10-09-2008 | Отправлено: 11:00 27-07-2010
    Kastermight



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

    Код:
    HotKeySet("^{DEL}", "_Exit"); Ctrl+Del
     
    While 1
        RegDelete('HKEY_CURRENT_USER\Software\Microsoft\DrWatson')
        Sleep(1000*60*10); 10 min
    WEnd
     
    Func _Exit()
        Exit
    EndFunc

    Всего записей: 23 | Зарегистр. 02-03-2009 | Отправлено: 11:37 27-07-2010 | Исправлено: Kastermight, 11:39 27-07-2010
       

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