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

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



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ynbIpb
    Спасибо!
     
    Что-то это keygen странный какой-то...
    Я конечно не спец, но раньше так работало...

    Код:
    Run("keygen.exe")
    $hKeygenWin = WinGetHandle ("[CLASS:#32770]","Adobe After Effects CS5")  
    ControlClick ($hKeygenWin,"","Button1")
    $Serial = ControlGetText($hKeygenWin,"","Edit1")
    Sleep(500)
     
    WinActivate("* Безымянный - Notepad2 (Администратор)","")
    WinWaitActive("* Безымянный - Notepad2 (Администратор)","")
    Send($Serial)
    $PID = ProcessExists("keygen.exe")
    If $PID Then ProcessClose($PID)

     
    Сейчас он мне заместо серийника в блокнот вводит слово "keygen.exe"...
    Помогите, пожалуйста...

    Всего записей: 410 | Зарегистр. 02-07-2010 | Отправлено: 14:05 17-02-2012
    Evgeniyuser

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день. Может я не туда обращаюсь. Какие существуют скрипты для распарсивания новостных сайтов. Конкретно интересует сайт nnm. Как закачать его блог? Знаю программу Teleport Pro и Offline Explorer. Подойдут ли они?

    Всего записей: 63 | Зарегистр. 30-01-2011 | Отправлено: 14:19 17-02-2012
    ynbIpb



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

    Цитата:
    Сейчас он мне заместо серийника в блокнот вводит слово "keygen.exe"...  
     Помогите, пожалуйста...

    у меня работает:

    Код:
    $iPid = Run('"' & @ScriptDir & '\keygen.exe' & '"') ; запускаем кейген
    $hKeygenWin = WinWait ("[CLASS:#32770]","Adobe After Effects CS5", 5)
    ControlClick ($hKeygenWin,"","Button1")
    Sleep(500)
    $sSerial = ControlGetText($hKeygenWin,"","Edit1")
    Sleep(500)
    WinActivate("Безымянный — Блокнот","")
    Sleep (500)
    Send($sSerial)
    ProcessClose($iPid)


    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 15:11 17-02-2012
    BuZzOFF89



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ynbIpb
    Во! Сейчас всё Ok. Голова!
    Спасибо :)

    Всего записей: 410 | Зарегистр. 02-07-2010 | Отправлено: 15:24 17-02-2012
    Zloy_Gelud



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

    Код:
    s = "\\\\test\\"; -- bla bla

    вырезать кусок "\\\\test\\"? Количество слешей может быть разное, как в начале так и в конце, а может их не быть и вообще. Спасибо!

    Всего записей: 3265 | Зарегистр. 30-05-2007 | Отправлено: 17:32 17-02-2012
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Zloy_Gelud 17:32 17-02-2012
    Цитата:
    вырезать кусок "\\\\test\\"?

    Если я верно понял:
     

    Код:
    $vTest = 's = "\\\\test\\"; -- bla bla'
     
    $sRet = StringRegExpReplace($vTest, '\\*test\\*', '')
    MsgBox(64, 'Title', $sRet)


    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 18:48 17-02-2012
    BuZzOFF89



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Нужно в файле Adobe Setup Error.log или Adobe After Effects CS5 10*.log найти строчку Exit code:.
    Моих знаний и интернета хватило на это..

    Код:
    If FileExists(@CommonFilesDir & "\Adobe\Installers\Adobe Setup Error.log") Then
    $sSearched = "Exit code:"
    $sText = FileRead(@CommonFilesDir & "\Adobe\Installers\Adobe Setup Error.log")
    $aLines = StringSplit($sText, @CRLF, 1)
    For $i = 1 To $aLines[0] Step +1
        If StringInStr($aLines[$i], $sSearched) Then MsgBox(64, "Found", $aLines[$i])
    Next
    Else
    If FileExists(@CommonFilesDir & "\Adobe\Installers\Adobe After Effects CS5 10 02-19-2012.log") Then
    $sSearched = "Exit code:"
    $sText = FileRead(@CommonFilesDir & "\Adobe\Installers\Adobe After Effects CS5 10 02-19-2012.log")
    $aLines = StringSplit($sText, @CRLF, 1)
    For $i = 1 To $aLines[0] Step +1
        If StringInStr($aLines[$i], $sSearched) Then MsgBox(64, "Found", $aLines[$i])
    Next
    Else
    EndIf
    EndIf

    Ищется/показывается... НО.
    Файл Adobe After Effects CS5 10 02-19-2012.log может быть любым, в зависимости от даты.
    И когда я вбиваю Adobe After Effects CS5 10*.log, то почему-то поиск не работает.
     
    И второе. В файле Adobe After Effects CS5 10*.log строчка Exit Code дублирутся несколько раз. Надо ту строчку, что в конце. Может как-то начать поиск с определённой строчки?

    Всего записей: 410 | Зарегистр. 02-07-2010 | Отправлено: 12:21 21-02-2012 | Исправлено: BuZzOFF89, 12:33 21-02-2012
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BuZzOFF89,
    Можно увидеть пример файла Adobe After Effects CS5 10*.log ?
    В папке @CommonFilesDir & "\Adobe\Installers" таких файлов один или несколько?

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 14:13 21-02-2012 | Исправлено: madmasles, 14:18 21-02-2012
    BuZzOFF89



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    madmasles
    С расширением log - один. А так окромя этого файла там ещё имеются логи уже установленных прог от Adobe, запакованные в *.gz.
    http://dl.dropbox.com/u/52819481/Adobe%20After%20Effects%20CS5%2010%2002-19-2012.log
    Значение "Exit code:" может быть разным. В зависимости от того как (правильно/неправильно) установился After Effects.

    Всего записей: 410 | Зарегистр. 02-07-2010 | Отправлено: 14:47 21-02-2012
    FSWE

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А есть ли программа на AutoIt, которая могла бы сделать 100 или заданное количество вариаций одного jpg файла? То есть они бы выглядели одинаково, но были бы отличными для компьютера. В плане размера например или незаметно отличались бы по изображению или еще как.

    Всего записей: 186 | Зарегистр. 04-07-2009 | Отправлено: 16:35 21-02-2012 | Исправлено: FSWE, 16:36 21-02-2012
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BuZzOFF89,
    Попробуйте так.
    Код:
    $sDir = @CommonFilesDir & '\Adobe\Installers\'
    $sSearch = 'Adobe After Effects CS5 10*.log'
    $hSearch = FileFindFirstFile($sDir & $sSearch)
    If $hSearch = -1 Then Exit 1
    $sFile = FileFindNextFile($hSearch)
    FileClose($hSearch)
    If Not $sFile Then Exit 2
    $sText = FileRead($sDir & $sFile)
    $aExitCode = StringRegExp($sText, '(Exit Code.*?)\r?\n', 3)
    If @error Then Exit 3
    $sMessage = StringFormat('Всего:\t%d\nПоследний:\t%s', UBound($aExitCode), $aExitCode[UBound($aExitCode) - 1])
    MsgBox(64, 'Info', $sMessage)
    ;все посмотреть:
    For $i = 0 To UBound($aExitCode) - 1
        ConsoleWrite($aExitCode[$i] & @LF)
    Next

     
    FSWE,

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

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 20:38 21-02-2012 | Исправлено: madmasles, 21:15 21-02-2012
    BuZzOFF89



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    madmasles
    Спасибо огроменное! Всё работает
     
    Я уже дома подумал о том что можно было этот Adobe After Effects CS5 10*.log переименовывать, а потом искать нужное... Но раз так всё получилось, то ещё лучше!

    Всего записей: 410 | Зарегистр. 02-07-2010 | Отправлено: 05:40 22-02-2012
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    FSWE
    Цитата:
    То есть они бы выглядели одинаково, но были бы отличными для компьютера. В плане размера например или незаметно отличались бы по изображению или еще как.
    Если устроит добавление в файл jpg уникального комментария (картинка остается прежней, но меняется хеш-сумма), то могу попробовать написать.
     
    PS
    А зачем это нужно?

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 11:28 22-02-2012 | Исправлено: madmasles, 11:41 22-02-2012
    FSWE

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Попробуйте плиз.
     
    Хотел бы разобраться с Аутоитом, с комментарием картинок, с тем как делать файлы разных размеров с одинаковой картинкой, как менять хеш-суммы и что это такое, есть еще rarjpg, со всем этим.
     

    Всего записей: 186 | Зарегистр. 04-07-2009 | Отправлено: 16:26 22-02-2012
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто нибудь знает, если какое WM-сообщение, которое ловит время простоя копьютера?

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 14:22 24-02-2012
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 14:22 24-02-2012
    Цитата:
    если какое WM-сообщение, которое ловит время простоя копьютера?

    Нет.
    Для этого используется GetLastInputInfo, вот пример от amel27:
     

    Код:
    #include <Date.au3>
     
    HotKeySet("{ESC}", "_Quit")
     
    $IdleMinimum = 50 ; допустимый период неактивности в миллисекундах
     
    While 1
        $iIdle = _IdleWaitStart($IdleMinimum)
        ConsoleWrite(_Now() & ' ' & @UserName & ' неактивен уже ' & _TickToTimeString($iIdle) & @CRLF)
        $iIdle = _IdleWaitCommit($IdleMinimum)
        ConsoleWrite(_Now() & ' ' & @UserName & ' был неактивен ' & _TickToTimeString($iIdle) & @CRLF)
    WEnd
     
    ; Ожидание начала бездействия пользователя.
    ; Возвращает время неактивности (в тиках)
    ; $idlesec - минимальная длительность ожидаемой неактивности (в тиках)
    Func _IdleWaitStart($idlesec)
        Local $aRet, $iSave, $iTick, $LastInputInfo = DllStructCreate("uint;dword")
        DllStructSetData($LastInputInfo, 1, DllStructGetSize($LastInputInfo))
        DllCall("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr($LastInputInfo))
     
        Do
            Sleep(200)
            $iSave = DllStructGetData($LastInputInfo, 2)
            DllCall("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr($LastInputInfo))
            $aRet = DllCall("kernel32.dll", "long", "GetTickCount")
        Until ($aRet[0] - DllStructGetData($LastInputInfo, 2)) > $idlesec
     
        Return $aRet[0] - DllStructGetData($LastInputInfo, 2)
    EndFunc   ;==>_IdleWaitStart
     
    ; Ожидание окончания бездействия пользователя.
    ; Возвращает время неактивности в (тиках)
    ; $idlesec - минимальная длительность ожидаемой неактивности в (тиках)
    Func _IdleWaitCommit($idlesec)
        Local $iSave, $LastInputInfo = DllStructCreate("uint;dword")
        DllStructSetData($LastInputInfo, 1, DllStructGetSize($LastInputInfo))
        DllCall("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr($LastInputInfo))
     
        Do
            $iSave = DllStructGetData($LastInputInfo, 2)
            Sleep(200)
            DllCall("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr($LastInputInfo))
        Until (DllStructGetData($LastInputInfo, 2) - $iSave) > $idlesec
     
        Return DllStructGetData($LastInputInfo, 2) - $iSave
    EndFunc   ;==>_IdleWaitCommit
     
    Func _TickToTimeString($iTicks)
        Local $iHours, $iMins, $iSecs, $sText = ''
        _TicksToTime($iTicks, $iHours, $iMins, $iSecs)
     
        If $iHours Then $sText = $iHours & ' часов '
        If $iMins Then $sText &= $iMins & ' минут '
        If $iSecs Then $sText &= $iSecs & ' секунд'
        If $sText = '' Then $sText = 'меньше секунды'
     
        Return $sText
    EndFunc   ;==>_TickToTimeString
     
    Func _Quit()
        Exit
    EndFunc   ;==>_Quit


    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:14 24-02-2012
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Слегка переделал, так вроде реальней работает. А то непонятно $IdleMinimum = 50, а в цикле Sleep(200), конечно 200>50 и условие будет верно всегда.
     

    Код:
    #include <Date.au3>
     
    Global $Diff=0
    AdlibRegister('_IdleWaitStart', 1000)
     
    HotKeySet("{ESC}", "_Quit")
     
    While 1
        Sleep(100000)
    WEnd
     
    ; Ожидание начала бездействия пользователя.
    ; Возвращает время неактивности (в тиках)

    Func _IdleWaitStart()
        Local $aRet, $iSave, $iTick, $LastInputInfo = DllStructCreate("uint;dword")
        DllStructSetData($LastInputInfo, 1, DllStructGetSize($LastInputInfo))
        DllCall("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr($LastInputInfo))
        $iSave = DllStructGetData($LastInputInfo, 2)
        $aRet = DllCall("kernel32.dll", "long", "GetTickCount")
        $Diff = $aRet[0] - DllStructGetData($LastInputInfo, 2)
        ConsoleWrite(_Now() & ' ' & @UserName & ' неактивен уже ' & _TickToTimeString($Diff) & @CRLF)
    EndFunc   ;==>_IdleWaitStart
     
    Func _TickToTimeString($iTicks)
        Local $iHours, $iMins, $iSecs, $sText = ''
        _TicksToTime($iTicks, $iHours, $iMins, $iSecs)
     
        If $iHours Then $sText = $iHours & ' часов '
        If $iMins Then $sText &= $iMins & ' минут '
        If $iSecs Then $sText &= $iSecs & ' секунд'
        If $sText = '' Then $sText = 'меньше секунды'
     
        Return $sText
    EndFunc   ;==>_TickToTimeString
     
    Func _Quit()
        Exit
    EndFunc
      ;==>_Quit

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 16:26 24-02-2012
    molschan



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Доброго времени суток! Очень нужна ваша помощь в написании AutoIt скрипта. Задача следующая: в Windows 7 есть 30 учетных записей User1, User2, ..., User30. При загрузке Windows нужно, чтобы все 30 пользователей были загружены (в каждом из них в автозапуске стоит программа, которая должна работать в 30 потоков одновременно). Спасибо

    Всего записей: 438 | Зарегистр. 02-07-2005 | Отправлено: 05:19 25-02-2012
    ice99

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите следующий момент.
     
    На машине№1 запускается Autoit-приложение (ftp сервер? tcp сервер?)
    Машина №2 по интернету коннектится к машине №1 и браузит список файлов, с возможностью их загрузки.
     
    Машина №1 находится за роутером. (нужен no-ip.com?&&&)
     
    Подскажите алгоритм решения данной задачи.

    Всего записей: 163 | Зарегистр. 03-06-2005 | Отправлено: 19:49 25-02-2012
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ice99, можно использовать облачный сервис. например dropbox

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 20:48 25-02-2012
       

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