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

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

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

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

    ИМХО, не очень удобно - кто-то может и отключить создание коротких имен (всплывает такая рекомендация для оптимизации SSD-накопителей в частности).

    Всего записей: 6483 | Зарегистр. 28-01-2008 | Отправлено: 10:21 09-05-2014
    NIKZZZZ



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

    Цитата:
    кто-то может и отключить создание коротких имен

    Согласен.
     
    Тогда еще вариант.

    Код:
    $sPath ="C:\AA & BB"
    $sName="40 CU FT_4_R01.pdf"
    run( "cmd /c " & """" & $sName & """", $sPath , @SW_HIDE )  

     
    Ограничение - "&" не должен быть в имени файла.
     
     
    Добавлено:
    А вообще, открывать pdf с помощью cmd.exe зачем?

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 11:50 09-05-2014
    Xom9I4oK



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно ли (и если можно, то как) в сабже сделать такую вещь: надо мониторить браузер (желательно любой или хотя бы самые распространенные) на появление новых вкладок с определенным адресом сервера и если такой адрес попадется, то будет показано окно с текстом (в зависимости от последних n букв в ссылке текст будет меняться).

    Всего записей: 506 | Зарегистр. 01-04-2005 | Отправлено: 21:53 15-05-2014
    Alex_Piggy

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Доброе время, Xom9I4oK
    Наверное более реально будет решить другую задачу - при помощи, например, WinPcap.au3 проверять траффик и выводить сообщение если есть обращение к определенным страницам. Будет работать afaik только если нет прокси. К сожалению, моих знаний недостаточно чтобы такое написать. Увы, только идея...

    Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 22:07 15-05-2014
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, прошу Вашей помощи. Пожалуйста, приведите пример удаления группы файлов, не по имени файла, а по их md5-хэшам. Желательно, чтобы информация о контрольных суммах файлов извлекалась из *.ini-файла. Структура *.ini-файла может быть такой:
     
    [Files]
    1=Хэш первого файла
    2=Хэш второго файла
     
    и т.д.
     
    Буду очень благодарен Вашей помощи.

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 18:08 17-05-2014 | Исправлено: Artem_Butenko, 18:19 17-05-2014
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну как перебирать файлы и считать MD5 вот пример:

    Код:
    #include "md5.au3"
    #include <File.au3>
     
    Global $BufferSize = 0x20000
    Global $sFilesForDel = FileSelectFolder ("Open file", "", "", @ScriptDir)
    If $sFilesForDel = "" Then Exit
    $aFilesForDel = _FileListToArray($sFilesForDel, "*", 1)
    For $i=1 To $aFilesForDel[0]
        $FileHandle = FileOpen($sFilesForDel & "\" &$aFilesForDel[$i], 16)
        $MD5CTX = _MD5Init()
        For $j = 1 To Ceiling(FileGetSize($sFilesForDel & "\" &$aFilesForDel[$i]) / $BufferSize)
            _MD5Input($MD5CTX, FileRead($FileHandle, $BufferSize))
        Next
        $Hash = _MD5Result($MD5CTX)
        FileClose($FileHandle)
        MsgBox (0, "", "Файл: "&$aFilesForDel[$i]&@CRLF&"md5: " & Hex ($Hash))
    Next

    MD5 UDF от Ward'a
     
    А дальше уж сравнение со списком додумаешь...
     
     
    ------------- updated --------------
    Всё таки не додумал.
    Дополненный вариант:

    Код:
    #include "md5.au3"
    #include <File.au3>
    #include <Array.au3> ; для отладки
     
    $aMd5List = IniReadSection (@ScriptDir & "\md5.ini", "Files"); читаем секцию с MD5 хэшами из ini файла
    ;_ArrayDisplay($aMd5List) ; для отладки
    Global $BufferSize = 0x20000
    Global $sFilesForDel = FileSelectFolder ("Open file", "", "", @ScriptDir); выбираем каталог с файлами
    If $sFilesForDel = "" Then Exit ; если ничего не выбрали, выход
    $aFilesForDel = _FileListToArray($sFilesForDel, "*", 1) ; читаем список файлов в массив
    ;_ArrayDisplay($aFilesForDel) ; для отладки
    $sResult = "" ; создаём переменную, для хранения результата работы
    For $i=1 To $aFilesForDel[0] ; цикл перебора файлов в каталоге
        $FileHandle = FileOpen($sFilesForDel & "\" &$aFilesForDel[$i], 16)
        $MD5CTX = _MD5Init()
        For $j = 1 To Ceiling(FileGetSize($sFilesForDel & "\" &$aFilesForDel[$i])/ $BufferSize) ; цикл подсчёта MD5 хэша текущего файла
            _MD5Input($MD5CTX, FileRead($FileHandle, $BufferSize))
        Next
        $sHash = Hex (_MD5Result($MD5CTX))
        FileClose($FileHandle)
        For $l = 1 To $aMd5List[0][0] ; цикл перебора списка хэшей из ini файла
            If $sHash = $aMd5List[$l][1] Then ; если хэш текущего файла совпадает с записью в ini файле
                FileDelete ($sFilesForDel & "\" &$aFilesForDel[$i]) ; удаляем текущий файл
                $sResult &= $sFilesForDel & "\" &$aFilesForDel[$i] & @CRLF ; записываем путь в переменную.
            EndIf
        Next
    Next
    If $sResult  <> "" Then  ; если переменная не пуста, значит искомые файлы найдены
    MsgBox (0, "Готово!", "Удалённые файлы: "&@CRLF& $sResult)
    Else
    MsgBox (0, "Готово!", "Нет файлов для удаления")
    EndIf

    md5_del_files.rar

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 00:19 18-05-2014 | Исправлено: ynbIpb, 12:26 18-05-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ynbIpb,
    Можно штатную _Crypt_HashFile() использовать.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 17:18 19-05-2014
    ynbIpb



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

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 18:33 19-05-2014
    NIKZZZZ



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

    Код:
    #include <Crypt.au3>
     
    $sFilesForDel = @ScriptDir ; исходный каталог для примера
     
    $sIniFile = StringLeft(@ScriptFullPath, StringInStr(@ScriptFullPath, ".", 0, -1)) & "ini"
     
    $asSection = IniReadSection($sIniFile, 'Files')
     
    $sMD5String = ''
    For $i = 1 To $asSection[0][0]
        $sMD5String &= '0x' & $asSection[$i][1] & ';'
    Next
     
    DelFiles($sFilesForDel)
     
    Func DelFiles($sPath)
        Local $sFile, $sEARCH
        $sEARCH = FileFindFirstFile($sPath & "\*.*")
        If @error Then Return
        While 1
            $sFile = FileFindNextFile($sEARCH)
            If @error Then ExitLoop
            $sFile = $sPath & "\" & $sFile
            If @extended Then
                DelFiles($sFile)
            Else
                If StringInStr($sMD5String, _Crypt_HashFile($sFile, $CALG_MD5)) Then FileDelete($sFile)
            EndIf
        WEnd
        FileClose($sEARCH)
    EndFunc   ;==>DelFiles

     
    Имя .ini файла должно совпадать с именем скрипта!

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 19:09 19-05-2014 | Исправлено: NIKZZZZ, 19:16 19-05-2014
    Ser_W



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет, сообщество! У меня есть такой вот скрипт:
    Код:
    Run("ChromeSetup.exe")
    Global $Title='Google Chrome Installer'
     
    ; Install AdblockPlus extension ( https://adblockplus.org/en/chrome )
    AutoItSetOption("WinTitleMatchMode", 2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase
    WinWaitActive(" - Google Chrome")
    WinSetState(" - Google Chrome", "", @SW_MAXIMIZE)
    Send("^{l}")
    ; Send("^{a}")
    Send("https://adblockplus.org/en/chrome")
    Send("{ENTER}")
     
    Send("^{t}")
    Send("http://dragonserw.livejournal.com/677.html")
    Send("{ENTER}")
     
    Send("^{t}")
    Send("chrome://settings/contentExceptions{#}plugins")
    Send("{ENTER}")
     
    Send("^{t}")
    Send("chrome://settings/addLanguage")
    Send("{ENTER}")
     
    BlockInput(0)
    Проблема с ним - в том, что строки типа https://adblockplus.org/en/chrome вводятся в адресную строку Хрома крайне медленно. Можно ли это как-то решить? Например, автоматическим копированием и вставкой этих строк?
     
    Добавлено:
    Я сделал реквест на то, чтобы gedit понимал и подсвечивал синтаксис Autoit: https://bugzilla.gnome.org/show_bug.cgi?id=730518
     
    Но в ИРЦ мне настоятельно рекомендовали сделать 'a lang file for that' (привожу переписку ниже). Вы можете помочь с этим и сделать lang-файл по гайду https://wiki.gnome.org/Apps/Gedit/NewLanguage ?
     

    Цитата:
    *** SerW joined #gedit
    16:25    SerW    Hello everyone. Where should I post a request of gedit developers add .au3 ( http://www.autoitscript.com/site/autoit/ ) highlights ability into gedit? Тут по-русски можно? )
    16:25    pbor    SerW: bugzilla.gnome.org
    16:26    pbor    SerW: note however that it is very improbable that we will write a lang file for that (or other languages), but if one is contributed we will be happy to review it and include it
    16:26    pbor    SerW: see https://wiki.gnome.org/Apps/Gedit/NewLanguage
    16:30        *** evfool quit (Read error: 131 (Connection reset by peer))
    16:30        *** evfool joined #gedit
    16:36        *** prth is now known as prth|Away
    16:37    SerW    pbor: I am registerered on bugzilla.gnome.org but this site is a bit tricky for me/ Could you please provide for me a link where shoulg I post my request on https://bugzilla.gnome.org/ &
    16:37    SerW    ?
    16:38    pbor    SerW: https://bugzilla.gnome.org/enter_bug.cgi?product=gtksourceview
    16:38    SerW    Oh! https://bugzilla.gnome.org/enter_bug.cgi?product=gedit
    16:38    pbor    but as I said, if it is just a request it will probably just lay around until someone closes it
    16:39    pbor    if instead you make a autoit.lang then it is ok
    16:39    pbor    the problem as you can imagine is that there are thousands of different syntax languages
    16:40    pbor    and we cannot make all of them
    16:40    pbor    so we rely on people interested in a specific language to make one
    16:42    SerW    Ok
    16:43    SerW    I selected gedit, but the site asks me to select Component. What Component should I select?
    16:43    slaf    Syntax files
    16:43    pbor    it is better if you file it against gtksourceview with the component syntax-files
    16:44    slaf    and hi guys
    16:45    pbor    hi slaf
    16:45    pbor    how's it going?
    16:45    slaf    fine
    16:45    SerW    slaf: there is no 'Syntax files' selection
    16:45    slaf    pbor : i assume you too ?
    16:45    pbor    SerW: https://bugzilla.gnome.org/enter_bug.cgi?product=gtksourceview
    16:46    slaf    Serw : in gtksourceview part
    16:46    pbor    slaf: yes, everything alright
    16:46    SerW    Oh )
    16:46    SerW    Thanks!

     
    Добавлено:
    Написал про это в форуме Автоита: http://www.autoitscript.com/forum/topic/161522-i-want-gedit-dewelopers-to-support-au3-highlighting-could-someone-provide-a-lang-file-for-that/

    Всего записей: 102 | Зарегистр. 24-05-2007 | Отправлено: 16:30 21-05-2014
    ynbIpb



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

    Цитата:
    Проблема с ним - в том, что строки вводятся в адресную строку Хрома крайне медленно

    Это может быть из-за темы Aero в ОС.

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 18:29 21-05-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ser_W
    Влзьмите для примера java.lang (из-за блокового комментария), для донора \Extras\Editors\Notepad++\autoit.xml (т.к. тоже XML).

    Всего записей: 6483 | Зарегистр. 28-01-2008 | Отправлено: 03:52 22-05-2014
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, прошу помощи. Может у Вас в закромах остался рабочий скрипт удаления значений из "*.ini-файла" по маске.
     
    Допустим в "*.ini-файле" присутствует секция [Section_Test], а в ней порядка двухста значений, требуется удалить значения по маске *Parameter_Test_1*, *Parameter_Test_4*, только таким образом, чтобы не оставлять пустых строк на месте удаленный значений. Буду очень признателен Вашей доброй помощи.
     
    Поправлю себя, значениями их назвать сложно, т.к. структуре "Параметр=Значение" соответствий нет. Т.е. файл имеет структуру:
     
    [Section_Test]
    Version=1
    Текстовая строка 1 321_Parameter_Test_123
    Текстовая строка 2
    Текстовая 321_Parameter_Test_123 строка 3
    Текстовая строка 4 4324_Parameter_Test_41234
    Текстовая строка 5
    Текстовая строка 6

    и т.д.
     
    Т.е. требуется удалить все текстовые строки содержащие маску *Parameter_Test_1*, *Parameter_Test_4*.

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 15:02 26-05-2014 | Исправлено: Artem_Butenko, 15:33 26-05-2014
    NIKZZZZ



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

    Цитата:
    Т.е. требуется удалить все строки содержащие маску *Parameter_Test_*.  

    Ну, это не чистый ini файл.
    Просто, удалить все строки по данной маске, не сложно
     

    Код:
    $sIniFileName = "xx.ini"
    $sMask = "(?m)^.*Parameter_Test_[14].*$\s*"
     
    $sIniFile = FileRead($sIniFileName)
    FileDelete($sIniFileName)
    $sIniFile = StringRegExpReplace($sIniFile, $sMask,'')
    FileWrite($sIniFileName, $sIniFile)

     
    Если удалять только из указанной секции, немного сложнее.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 15:52 26-05-2014 | Исправлено: NIKZZZZ, 15:54 26-05-2014
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
     
    Спасибо, а если обработать "*.ini-файл", как обычный текстовый файл, но при условии что маски две и более, как я писал выше, например, *Parameter_Test_1*, *Parameter_Test_4*?
     
    Строки для удаления примерно могут быть такими:
    C:\DOCUME~1\9335~1\LOCALS~1\TEMP\_TC\21324_343Parameter_Test_13434_343.EXE
    C:\Test\abcParameter_Test_43434_343.EXE

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 16:02 26-05-2014 | Исправлено: Artem_Butenko, 16:15 26-05-2014
    NIKZZZZ



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

    Цитата:
    но при условии что маски две и более, как я писал выше, например, *Parameter_Test_1*, *Parameter_Test_4*?

    Так и он так обрабатывается, как обычный текстовый файл, а маски - пиши регулярное выражение
    $sMask = "(?m)^.*Parameter_Test_[14].*$\s*"
    написан под то, что ты указал (*Parameter_Test_1*, *Parameter_Test_4*?)  
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:16 26-05-2014 | Исправлено: NIKZZZZ, 16:26 26-05-2014
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
     
    Хорошо, так и делаю. Вот мой скрипт.
     
    Сам "*.ini-файл" имеет следующую структуру
     
    Только он не удаляет из "*.ini-файла" строки:
    C:\DOCUME~1\9335~1\LOCALS~1\TEMP\_TC\21324_343Parameter_Test_13434_343.EXE  
    C:\Test\abcParameter_Test_43434_343.EXE
     
    И как быть, если маски очень не похожи, например, *Parameter_Test_1*, *Program_Start_SD*?

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 16:30 26-05-2014 | Исправлено: Artem_Butenko, 16:47 26-05-2014
    NIKZZZZ



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

    Цитата:
    И как быть, если маски очень не похожи, например, *Parameter_Test_1*, *Program_Start_SD*?

    Ну, тогды так

    Код:
    $sMask = "(?mi)^.*(Parameter_Test_1|Program_Start_SD|Program_Start_XXX).*$\s*"  

    Не будет зависеть от регистра, возможно, в этом проблемы.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:58 26-05-2014
    Artem_Butenko



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

    Цитата:
    Код:
    $sMask = "(?mi)^.*(Parameter_Test_1|Program_Start_SD|Program_Start_XXX).*$\s*"  
     
    Не будет зависеть от регистра, возможно, в этом проблемы.

     
    Так тоже, к сожалению, не работает.

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 17:18 26-05-2014
    NIKZZZZ



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

    Цитата:
    Так тоже, к сожалению, не работает.

    Приведи полный iini файл и то, что должно получиться, желательно на файлообменнике.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 18:29 26-05-2014
       

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