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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Я использую свою прогу "Иконка папки" и она в Win10 тоже меняет с задержкой.Я уже зная это параллельно делаю свои дела и иконка меняется. Проблемней если иконку поменять второй раз, тогда она сменится после перезагрузки.

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



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

    Цитата:
    Я использую свою прогу "Иконка папки"  

    Наверное прекрасная программа, из моего vbs тоже могла получиться целая программа, если бы её чуть доработать, но я не успел. Всем спасибо за реальную помощь. Буду пользоваться тем, что есть.

    Всего записей: 1511 | Зарегистр. 07-08-2005 | Отправлено: 20:26 16-08-2018
    NIKZZZZ



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

    Код:
    #include <WinAPIEx.au3>
    #include <APIConstants.au3>
     
    $sDir = $CmdLine[1]
    DllCall('shell32.dll', 'none', 'SHChangeNotify', 'long', $SHCNE_UPDATEDIR, 'uint', $SHCNF_PATH + $SHCNF_FLUSH, 'wstr', $sDir,  'dword_ptr', 0)
    Sleep(10000) ;К сожалению, без этого не работает
    _Update_Explorer()
     
    Func _Update_Explorer()
        Local $bOld = Opt("WinSearchChildren", True)
        Local $aWinListSHELLDLL_DefView = WinList("[CLASS:SHELLDLL_DefView]")
        For $i = 0 To $aWinListSHELLDLL_DefView[0][0]
            DllCall("user32.dll", "long", "SendMessage", "hwnd", $aWinListSHELLDLL_DefView[$i][1], "int", 0x111, "int", 28931, "int", 0)
        Next
        Opt("WinSearchChildren", $bOld)
    EndFunc   ;==>_Update_Explorer
     
     


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 20:45 16-08-2018 | Исправлено: NIKZZZZ, 20:53 16-08-2018
    BOBAT



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

    Цитата:
    Вот еще не слишком красивое, но решение  

    Всё тоже самое, только к времени, за которое иконка менялась раньше  добавляется ещё 10 сек (Sleep(10000) ;К сожалению, без этого не работает )
    Спасибо всем за помощь, буду пользоваться имеющимся вариантом

    Всего записей: 1511 | Зарегистр. 07-08-2005 | Отправлено: 07:10 17-08-2018 | Исправлено: BOBAT, 07:11 17-08-2018
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть ещё SHCNE_UPDATEITEM, параметром можно попробовать каталог или сам desktop.ini.
    Ну и погеморней: посмотреть программу, которая меняет сразу (исходники посмотреть или в отладчике попробовать найти, с чем зовётся SHChangeNotify или что ещё).

    Всего записей: 6483 | Зарегистр. 28-01-2008 | Отправлено: 09:28 17-08-2018 | Исправлено: Skif_off, 09:29 17-08-2018
    NIKZZZZ



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

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 06:41 22-08-2018
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Вы что-то подобное используете и для нескомпилированных скриптов: ничего не говорящие имена функций и переменных? Помнится, как-то пытался отучить ваш скрипт автомонтирования вешать на букву всё продряд, раздражало присвоение буквы разделу без ФС или с ФС, неподдерживаемой Win, в частности ext4, - не осилил

    Всего записей: 6483 | Зарегистр. 28-01-2008 | Отправлено: 09:29 22-08-2018
    NIKZZZZ



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

    Цитата:
    Вы что-то подобное используете и для нескомпилированных скриптов: ничего не говорящие имена функций и переменных? Помнится, как-то пытался отучить ваш скрипт автомонтирования  

    SciTE , входящий в пакет Autoit, содержит Au3Stripper, довольно полезная вещь, она позволяет оптимизировать скрипт, не читаемость результат оптимизации, хотя в принципе, немного защищает исходный код.
    Но, декомпилировав такой скрипт, вы получаете полностью рабочий скрипт, который можно править и заново скомпилировать.
    Au3Cx позволяет не только сделать  декомпилированный скрипт не читаемым, но и делает его не работоспособным.

    Цитата:
    Помнится, как-то пытался отучить ваш скрипт  

    Так надо было попросить у меня исходник.  
     
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 10:13 22-08-2018
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    В основном исспользую нескомпилированные скрипты, а чтобы избавиться от лишнего в инклюдах (если их много и сразу не вытаскивал только нужное ручками) такую оптимизацию отключаю, пользуюсь /StripOnly. В чём суть оптимизации? Экономится память на именах функций и переменных, больше ничего?
     

    Цитата:
    Так надо было попросить у меня исходник.

    А его не было в паблике? Я его не декомпилировал, просто вытащил обычный, нескомпилированный, au3-файл из какой-то сборки WinPE, скрипт был как пропущенный через Au3Stripper с /RenameMinimum, ну и в итоге запутался и бросил, а потом идею загрузки без автомонтирования разделов хардов при загрузке ОС, типа как WinFE, как-то отложил совсем...

    Всего записей: 6483 | Зарегистр. 28-01-2008 | Отправлено: 10:50 22-08-2018
    NIKZZZZ



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

    Цитата:
    Экономится память на именах функций и переменных, больше ничего?  

    Скорость растет, реально ощущается если например, функция вызывается в цикле несколько тысяч раз, а так, экономия памяти не особо принципиальна, но почистить лишние инклюды полезно в любом случае.
    Наиболее оптимально использовать A3x , выполняется быстрее, чем Au3.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 11:17 22-08-2018
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Для себя решил в пользу Au3: да, обоим форматам достаточно AutoIt3.exe, но если понадобится что-то подправить, то для Au3 будет достаточно всего лишь любого текстового редактора.

    Всего записей: 6483 | Зарегистр. 28-01-2008 | Отправлено: 12:19 22-08-2018
    NIKZZZZ



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

    Цитата:
     для Au3 будет достаточно всего лишь любого текстового редактора.

    Согласен, но мне несколько раз предявлели претензии, что скрипт не работает, потом выяснялось, что люди правили скрипт, при этом оправдываясь "да я же ничего не делал, хотел только иконку поменять".

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:37 22-08-2018
    Andrey_A_A



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    NIKZZZZ, спасибо, очень полезная вещь, мне понравилась, хотя давно пользуюсь собственной обфускацией (стандартные Obfuscator и Au3Stripper спотыкаются на тернарных условиях, одинарных/двойных кавычках в сложных рег. выражениях и ещё в ряде вещей)
    С Au3Cx вроде полёт нормальный, есть ряд предложений:
    1. Можно ли ещё и макросы  (типа @ScriptDir и другие) "защитить", чтобы при декомпиляции их не было видно
    2. Можно ли добавить рандомное переименование имён встроенных функций и ключевых выражений типа Func, EndIf... а то сейчас на коленке можно написать код замены в обратную сторону после работы Exe2Aut (создать скрипт со всеми встроенными функциями, применить Au3Cx, посмотреть цифры замен... дальше дело техники)
    А при рандомной работе (т.е. при каждой обработке Au3Cx будет разный итог) вернуть все на своё место будет не так просто...
    И кое-что написал в личку...

    Всего записей: 1389 | Зарегистр. 15-08-2011 | Отправлено: 13:01 22-08-2018
    NIKZZZZ



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

    Цитата:
    есть ряд предложений

    К сожалению, нельзя, интерпретатор не поймет.

    Цитата:
    применить Au3Cx, посмотреть цифры замен... дальше дело техники

    Можно, но только это потребует больших усилий, да и написать декомпилятор такого кода довольно сложно, простой заменой цыферок не получится, например 34 не есть 3&4.
     
     
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 13:58 22-08-2018
    Andrey_A_A



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

    Цитата:
    К сожалению, нельзя, интерпретатор не поймет.  

    Ну и ладно, NIKZZZZ, в любом случае получился хороший инструмент. Одна из проблем Autoit - это размер выходного файла в том числе из-за длины имён встроенных функций, раньше я использовал ссылки на функции типа $StringRegExpReplace=StringRegExpReplace - это намного уменьшало код, а вот теперь и имена функций и ключевые выражения превращаются в цифры - отлично! Спасибо за Au3Cx!

    Всего записей: 1389 | Зарегистр. 15-08-2011 | Отправлено: 17:04 22-08-2018
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, подскажите пожалуйста, каким образом реализовать следующую конструкцию.
    Необходим последовательный запуск нескольких программ установки с помощью функции RunWait.
    Имя программы и параметры её запуска будут извлекаться из "*.ini-файла" следующего содержания.
    Вопрос в том, что секции должны быть "синхронизированы", т.е. "1=Setup1.exe" должен соответствовать "1=-Param1" и т.д. Можно ли будет добавлять новые "парные" параметры в секции [Install] и [Parameters] без перекомпиляции скрипта.

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 15:43 24-08-2018 | Исправлено: Artem_Butenko, 15:46 24-08-2018
    Andrey_A_A



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Artem_Butenko, если ключи секций 1, 2, 3... будут последовательно совпадать, то можно простой вариант:

    Код:
    #include <Array.au3>
     
    $sFile='D:\Test\39003763\Name.ini'
     
    $aProgam=IniReadSection($sFile,'Install')
    _ArrayDisplay($aProgam)
     
    $aParam=IniReadSection($sFile,'Parameters')
    _ArrayDisplay($aParam)
     
    For $i=1 To $aProgam[0][0]
      RunWait('"'&$aProgam[$i][1]&'" "'&$aParam[$i][1]&'"')
    Next
    MsgBox(4096,"Финиш","End")


    Всего записей: 1389 | Зарегистр. 15-08-2011 | Отправлено: 15:59 24-08-2018 | Исправлено: Andrey_A_A, 16:10 24-08-2018
    Artem_Butenko



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

    Цитата:
    #include <Array.au3>
     
    $sFile='D:\Test\39003763\Name.ini'
     
    $aProgam=IniReadSection($sFile,'Install')
    _ArrayDisplay($aProgam)
     
    $aParam=IniReadSection($sFile,'Parameters')
    _ArrayDisplay($aParam)
     
    For $i=1 To $aProgam[0][0]
      RunWait('"'&$aProgam[$i][1]&'" "'&$aParam[$i][1]&'"')
    Next
    MsgBox(4096,"Финиш","End")  

     
    Спасибо Вам, работает!

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 16:20 24-08-2018 | Исправлено: Artem_Butenko, 17:17 24-08-2018
    Andrey_A_A



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

    Всего записей: 1389 | Зарегистр. 15-08-2011 | Отправлено: 17:17 24-08-2018 | Исправлено: Andrey_A_A, 17:18 24-08-2018
    Andrey_A_A



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    NIKZZZZ, выявилась очень большая проблема при работе Au3Cx, а именно после обработки невозможно запускать скрипты au3 через скомпилированный скрипт

    Код:
    Run('"'&@AutoItExe&'" /AutoIt3ExecuteScript "D:\Test\Name.au3"')

    хотя прописано:

    Код:
    compile(AutoItExecuteAllowed,True)

    Я понимаю, что Au3Cx - это обёртка для Aut2Exe2018.exe, но можно ли это исправить?
    1. Либо Aut2Exe неправильно конвертирует
    2. Либо при добавлении кода через ресурсы Au3Cx что-то искажает.
    ---------
    Погуглив, понял, что никак это не решить (вставлять в начало a3x compile(AutoItExecuteAllowed,True)), т.к. в a3x не влезть и при конвертировании/добавлении в exe строки AutoItExecuteAllowed уже нет.
    Может быть когда-то найдётся решение, а пока отложу в сторону Au3Cx, т.к. в ряде моих скриптов требуется /AutoIt3ExecuteScript

    Всего записей: 1389 | Зарегистр. 15-08-2011 | Отправлено: 19:31 24-08-2018 | Исправлено: Andrey_A_A, 21:51 24-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