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

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    о клево! одной строчки хватило, той что после  
    While 1
        WinSetOnTop($hGui, '', 1)  
     
    спасибО!

    Всего записей: 1464 | Зарегистр. 03-08-2003 | Отправлено: 18:29 16-08-2011 | Исправлено: LaVas_ki, 18:30 16-08-2011
    ubian



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

    Код:
     
    #include <ScreenCapture.au3>  
     
    $sFileWithPath = 'C:\Folder\save.INS';путь к файлу, в котором прописан путь к папке сохранения скриншота  
    $sTitle = '[Title:Ad Muncher Configuration; Class:#32770]'; параметры окна для скриншота  
     
    If FileExists($sFileWithPath) Then  
        $sPath = FileRead($sFileWithPath)  
        If Not FileExists($sPath) Or Not StringInStr(FileGetAttrib($sPath), 'D') Then  
            $sPath = @MyDocumentsDir  
        EndIf  
    Else  
        $sPath = @MyDocumentsDir  
    EndIf  
    ;если файла с путем нет или в нем прописана не существующая папка, то сохраняем в Мои документы  
    $sPath &= '\' & @MDAY & '_' & @MON & '_' & @HOUR & '_' & @MIN & '_' & @SEC & '.png'  
    $hWin = WinGetHandle($sTitle)  
    If $hWin Then  
        _ScreenCapture_CaptureWnd($sPath, $hWin)  
    Else  
        ;Если окна нет, то делаем скриншот всего экрана.  
        _ScreenCapture_Capture($sPath)  
    EndIf
     

    Как сделать чтобы имя файла сохраняемого было прописано в файле name.INS
    Я так понял делает скриншот переднего открытого окна, а если окно будет в 2-4 раза больше то он нормально сделает?
    И как сделать если нету указаной папки чтобы он сохранял на рабочий стол?
    P.S.: пишу обычно в AMS, но там возможности нет делать скрин, поэтому здесь ничего не знаю..
     
    Добавлено:
    а все разобрался. AutoIT рулит)
     
    Добавлено:
    @WorkingDir & '\dir.INS' - правильно?

    Всего записей: 623 | Зарегистр. 22-07-2011 | Отправлено: 18:55 16-08-2011
    Cosmogor



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

    Код:
    RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\PostBootReminders\Microsoft.OfferTour", "")
    If "1"=@error Then
    ; MsgBox(262144,"", "Раздел не существует.", 3)
    Else
    ; MsgBox(262144,"", "Раздел существует.", 3)
    EndIf

     
    Вот так можно проверить параметр в реестре.
     

    Код:
    RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\PostBootReminders\Microsoft.OfferTour", "Title")=0
    ; MsgBox(262144,"", "Параметр существует.", 3)
    Else
    ; MsgBox(262144,"", "Параметр не существует.", 3)
    EndIf

     
    Ну, а значение параметра уже не проверить никак, остаётся только DOS?

    Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 21:49 16-08-2011 | Исправлено: Cosmogor, 21:58 16-08-2011
    AZJIO



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

    Цитата:
    Ну, а значение параметра уже не проверить никак, остаётся только DOS?

    Код:
    $1=RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\PostBootReminders\Microsoft.OfferTour", "")
    MsgBox(0, 'Message', $1)

    Всего записей: 4410 | Зарегистр. 03-05-2006 | Отправлено: 22:21 16-08-2011 | Исправлено: AZJIO, 22:22 16-08-2011
    Cosmogor



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO, ну как же так и это так просто.  
    как всегда, на высоте
     
     

    Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 23:19 16-08-2011
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Попробовал сделать редактор загрузочного меню Win7 файла BCD - EditBCD.7z
    На текущий момент 8 команд. Хочу добавить возможность добавлять готовые образцы загрузки в качестве примера, например для WinXP или LiveCD.
    На данный момент доступные команды: смена имени, таймер, пункт по умолчанию, удаление пункта, удаление параметра.
    Добавлено:
    1. список команд в раскрывающемся списке с возможностью использовать свою команду
    2. Создаёт пункт WinXP
    3. Подробно/кратко

    Всего записей: 4410 | Зарегистр. 03-05-2006 | Отправлено: 05:54 17-08-2011 | Исправлено: AZJIO, 14:42 18-08-2011
    LaVas_ki

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

    Всего записей: 1464 | Зарегистр. 03-08-2003 | Отправлено: 11:21 17-08-2011
    madmasles

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


    Код:
    If WinExists('MyWindow') Then
        If Not WinActive('MyWindow') Then
            ControlClick('MyWindow', '', 'Button1')
        EndIf
    EndIf

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 19:08 17-08-2011
    Cosmogor



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

    Код:
    RegRead('HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Applets\Tour','')
     
    If @error=-1 Then
    MsgBox(262144,"", "Раздел [Tour] существует", 3)
     
    RegRead('HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Applets\Tour','RunCount')
    If @error=1 Then
    MsgBox(262144,"", "Параметр [RunCount] существует", 3)
     
    $1=RegRead('HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Applets\Tour','RunCount')
    If "0"=$1 Then
    MsgBox(262144,"", "Значение параметра [RunCount] совпадает", 3)
    Else
    MsgBox(262144,"", "Значение параметра [RunCount] не совпадает", 3)
    EndIf
     
    Else
    MsgBox(262144,"", "Параметр [RunCount] не существует", 3)
    EndIf
     
    Else
    MsgBox(262144,"", "Раздел [Tour] не существует", 3)
    EndIf


    Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 19:51 17-08-2011
    lokostex

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет!
     
    Только начал изучать AutoIt для автоматизации тестирования GUI приложения.
    Подскажите, пожалуйста, можно ли выводить в результате выполнения скрипта какой-то файл отчета со статусом прохождения определенных шагов?
     
    Например,
    Action______Param____Result
    login__________________OK
    checkTab___Файлы______OK
    selectFile____В очереди__OK
    logout_________________Failed

    Всего записей: 2 | Зарегистр. 17-08-2011 | Отправлено: 19:58 17-08-2011
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Cosmogor
    Советую так писать
    Код:
    If @error Then
    проверяет сразу на все ошибки, 1,2, -1, -2 и т.д.
    и так
    Код:
    If $1=0 Then
    так как 0 скорее всего число, а не текст.
     
    lokostex

    Код:
    $file = FileOpen(@ScriptDir&'\file.txt',1)
    FileWrite($file, $text)
    FileClose($file)

    только закрывать файл после завершения лога, при выходе из программы. А вторую строку FileWrite используешь в тот момент, когда нужно дописать строчку.

    Всего записей: 4410 | Зарегистр. 03-05-2006 | Отправлено: 20:36 17-08-2011 | Исправлено: AZJIO, 20:39 17-08-2011
    Cosmogor



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

    Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 21:05 17-08-2011
    lokostex

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO  Спасибо, буду пробовать.  
    А как передавать конкретные значения-флаги (ОК, Failed) на определенные шаги выполнения теста?
    Если не сложно, можете какой-нибудь пример кода с таким выводом привести?
    Т.е. например, код проверки выполнения чего-либо, а потом логирования этого действия.
    Мне бы общую структуру понять.. Заранее спасибо.

    Всего записей: 2 | Зарегистр. 17-08-2011 | Отправлено: 21:36 17-08-2011
    AZJIO



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

    Код:
    $file = FileOpen(@ScriptDir&'\file.log',1)  
    $tmp=RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders','Personal')
    If @error Then
        FileWrite($file, 'путь не найден'&@CRLF)
    Else
        FileWrite($file, 'ага, путь нашёл - '&$tmp&@CRLF)
    EndIf
    If FileExists(@SystemDir&'\shell32.dll') Then
        FileWrite($file, 'ну надо же, файл shell32.dll на месте'&@CRLF)
    Else
        FileWrite($file, 'нет файла shell32.dll'&@CRLF)
    EndIf
    If ProcessExists('svchost.exe') Then
        FileWrite($file, 'процесс svchost существует'&@CRLF)
    Else
        FileWrite($file, 'процесса svchost нет'&@CRLF)
    EndIf
    FileClose($file)  

    Всего записей: 4410 | Зарегистр. 03-05-2006 | Отправлено: 22:19 17-08-2011
    Cosmogor



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Интересно, а переменная сколько знаков в длину может содержать.
    В справке написано только какие символы могут быть.
    Вот например: $ReadRunCount, может и не работать
    если длина не больше 8 символов должна быть.
    но у меня работает, а вдруг в самый ответственный момент не сработает.
    Может кто-нибудь в курсе.

    Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 20:50 18-08-2011
    LaVas_ki

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    я интересуюсь насчет отправления ИМЕННО нажатий клавиш (например для игры в фоне)
    у игр нет же Contol компонентов

    Всего записей: 1464 | Зарегистр. 03-08-2003 | Отправлено: 21:19 18-08-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LaVas_ki
    Цитата:
    я интересуюсь насчет отправления ИМЕННО нажатий клавиш

    Код:
    $hActive = WinGetHandle('[ACTIVE]')
    $sString = 'Посылаем нажатие клавиш в не активное окно.'
    Run(@WindowsDir & '\notepad.exe')
    $hWin = WinWait('[Class:Notepad]', '', 5)
    If Not $hWin Then
        MsgBox(16, 'Error', 'Error')
        Exit
    EndIf
    WinActivate($hActive)
    If Not WinActive($hWin) Then
        $aSend = StringSplit($sString, '')
        For $i = 1 To $aSend[0]
            ControlSend($hWin, '', '[CLASS:Edit; INSTANCE:1]', $aSend[$i])
        Next
        WinActivate($hWin)
    Else
        MsgBox(16, 'Error', 'Error')
    EndIf


    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 13:10 19-08-2011
    LaVas_ki

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ControlSend - то что надо! пока устраивает
    спасибо за наводку

    Всего записей: 1464 | Зарегистр. 03-08-2003 | Отправлено: 13:28 19-08-2011 | Исправлено: LaVas_ki, 13:28 19-08-2011
    Cosmogor



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет всем
     
    Реально-ли на AutoIt, удалить из файла (Input.txt) все пустые строки.
     
    С помощью батника это делается просто, примерно так:
    for /f "delims=" %%i in ('type Input.txt') do (echo %%i >>Output.txt)

    Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 11:14 20-08-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Cosmogor
    Цитата:
    Реально-ли на AutoIt, удалить из файла (Input.txt) все пустые строки.

    Код:
    _FileDeleteEmptyLines(@ScriptDir & '\Test.txt')
     
    Func _FileDeleteEmptyLines($sFile)
        ;CreatoR, http://autoit-script.ru/index.php?topic=5705.msg40706#msg40706
        Local $sFileContent = StringRegExpReplace(FileRead($sFile), '(\r?\n){1,}', '\1')
        Local $hFOpen = FileOpen($sFile, 2 + FileGetEncoding($sFile))
        FileWrite($hFOpen, StringStripWS($sFileContent, 3))
        FileClose($hFOpen)
    EndFunc   ;==>_FileDeleteEmptyLines

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 12:23 20-08-2011
       

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