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

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



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

    Код:
    #include <Date.au3>
    $sCurrentTime = _Date_Time_SystemTimeToDateTimeStr (_Date_Time_GetLocalTime())
    If $sCurrentTime > "06/23/2017 19:19:32" Then ; если текущее время больше заданного
        MsgBox (0, "", "Пора делать бэкап! " & $sCurrentTime)
        Run ("cmd.exe")
    Else
        MsgBox (0, "", "Время бэкапа ещё не пришло! " & $sCurrentTime)
        Exit
    EndIf

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 19:19 23-06-2017
    Artem_Butenko



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

    Цитата:
    Artem_Butenko
    разовый примерно так:

    Код:
    #include <Date.au3>
    $sCurrentTime = _Date_Time_SystemTimeToDateTimeStr (_Date_Time_GetLocalTime())
    If $sCurrentTime > "06/23/2017 19:19:32" Then ; если текущее время больше заданного
        MsgBox (0, "", "Пора делать бэкап! " & $sCurrentTime)
        Run ("cmd.exe")
    Else
        MsgBox (0, "", "Время бэкапа ещё не пришло! " & $sCurrentTime)
        Exit
    EndIf

     
    Спасибище Вам большое. Поясните, что значит "разовый"? Как понимаю, можно реализовать в цикле? Если, например, было проигнорировано предложение о бэкапе. Можно пример, заинтриговали.

    Всего записей: 707 | Зарегистр. 19-02-2008 | Отправлено: 21:33 23-06-2017
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Разовый в смысле дата задана вручную в коде, значит скрипт будет актуален только до этой даты. Далее надо править дату и компилить новый скрипт.
     У Вас бэкап будет делать юзер, который увидел сообщение?

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 23:05 23-06-2017
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ynbIpb
     
    Нет, скрипт должен отрабатывать из автозагрузки, каждый раз после этой даты. Бэкап будет делать архиватор с параметрами.
     
    Добавлено:
    ynbIpb
     
    В последней версии 3.3.14.2, скрипт не компилируется.

    Всего записей: 707 | Зарегистр. 19-02-2008 | Отправлено: 01:22 24-06-2017 | Исправлено: Artem_Butenko, 01:24 24-06-2017
    donbaton

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

    Цитата:
    Остановка происходит на одних и тех же файлах или произвольных?
    Хорошо бы попробовать вести лог, например название активного окна(открытые  окна, процессы).  
    Возможно что Send("^s") отсылается не тому окну (например какое-то скрытое, модальное, не то, но тоже с ABBYY  в заголовке, которое выдает FR).  Попробуйте с SendKeepActive.
    Кроме клавиатуры есть еще мышь, можно ей попробовать понажимать кнопки в скрипте, реле это уже перебор.    Хотя   если есть Arduino и  сервопривод, то почему бы и нет..
    Не установлен ли у вас  автопереключатель клавиатуры, типа Punto Swither?  

    Остановка происходит на других файлах. Сейчас это документация по типу журналов. В основном бывает всё нормально. А сейчас скачал в одном месте сборник. И с ними со всеми такая проблема.  
    Напишите пожалуйста вариант(ы) кода, так как не программист, чтобы сразу мог использовать  и не ошибся при написании: для ведения лога, с SendKeepActive, нажатием мышью.
     
    Автопереключатель клавиатуры, типа Punto Swither не установлен. Arduino и  сервопривода на данный момент нету в наличии.

    Всего записей: 170 | Зарегистр. 18-03-2009 | Отправлено: 07:01 24-06-2017
    U235

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    donbaton, немного изменил  код, у меня  работает:
    Подробнее...

    Всего записей: 883 | Зарегистр. 14-12-2005 | Отправлено: 12:25 24-06-2017 | Исправлено: U235, 12:27 24-06-2017
    donbaton

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Благодарю за желание помочь. Только не помогло. В начале недели пришлю Вам в личку ссылку на файлы примеров.

    Всего записей: 170 | Зарегистр. 18-03-2009 | Отправлено: 22:28 24-06-2017
    donbaton

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Так как предложенные изменения скрипта не помогли, хочу попробовать вариант с кликом мышью по кнопке сохранения.  
    Записал нажатие утилитой из дистрибутива AutoIT AU3Record. Скрипт для автоматизации Finereader в это время не был запущен.
    Во втором варианте записывал нажатия с проставленной галочкой на "Record Window Text".
    1 Вариант:
    _WinWaitActivate("Untitled batch - ABBYY FineReader 8.0 Professional Edition - [1 - Image]","")
    MouseClick("left",496,106,1)
     
    2 вариант:
    _WinWaitActivate("Untitled batch - ABBYY FineReader 8.0 Professional Edition - [1 - Image]","")
    MouseClick("left",496,106,1)
    _WinWaitActivate("Untitled batch - ABBYY FineReader 8.0 Professional Edition - [1 - Image]","Batch")
    MouseClick("left",498,107,1)
     
    Прошу подсказать, как правильно подставить нажатие на кнопку в код скрипта.

    Всего записей: 170 | Зарегистр. 18-03-2009 | Отправлено: 09:00 28-06-2017
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    donbaton
    Лучше не кликать по координатам, а посмотреть идентификатор(ы) кнопки(ок) сохранения и заменить MouseClick() на ControlClick(). Подствить нужно после появления окна с кнопкой, похоже, после какого-то из вызовов WinWait().

    Всего записей: 6462 | Зарегистр. 28-01-2008 | Отправлено: 11:37 28-06-2017 | Исправлено: Skif_off, 11:37 28-06-2017
    U235

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

    Всего записей: 883 | Зарегистр. 14-12-2005 | Отправлено: 16:30 28-06-2017
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    U235
    Control Viewer тоже ничего не показывает?

    Всего записей: 6462 | Зарегистр. 28-01-2008 | Отправлено: 19:05 28-06-2017
    U235

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

    Всего записей: 883 | Зарегистр. 14-12-2005 | Отправлено: 21:20 28-06-2017
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Товарищи, пожалуйста, подскажите, каким образом можно реализовать MsgBox с обратным отсчётом?
    Желательно без мерцаний, и c отображением окна заголовка и основного содержания MsgBox с таймером.

    Всего записей: 707 | Зарегистр. 19-02-2008 | Отправлено: 01:07 29-06-2017 | Исправлено: Artem_Butenko, 02:14 29-06-2017
    Artem_Butenko



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

    Всего записей: 707 | Зарегистр. 19-02-2008 | Отправлено: 11:51 29-06-2017 | Исправлено: Artem_Butenko, 11:52 29-06-2017
    Skif_off

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

    Всего записей: 6462 | Зарегистр. 28-01-2008 | Отправлено: 14:20 29-06-2017
    donbaton

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    По подсказке U235 найдена строка, которую если добавить в начало первоначального скрипта помогла Opt("SendKeyDelay", 700)

    Всего записей: 170 | Зарегистр. 18-03-2009 | Отправлено: 17:30 29-06-2017
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
     
    Смотрел, хороший вариант с кнопочкой с отсчётом. Только тот пример, что я привёл видимо доработать нельзя?

    Всего записей: 707 | Зарегистр. 19-02-2008 | Отправлено: 01:58 30-06-2017
    Andrey_A_A



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

    Код:
    #include <Timers.au3>
     
    Global $iNum_Time=9, $sText_1='Привет   >> ', $sText_2=' <<    Пока', $sTitle_Time='Сообщение'
    $hGui = GUICreate("")
    $Timer = _Timer_SetTimer($hGui, 1000, "_UpdateMsgBox")
    MsgBox(262144 + 64, $sTitle_Time, $sText_1 & $iNum_Time & $sText_2, $iNum_Time)
    _Timer_KillTimer($hGui, $Timer)
     
    Func _UpdateMsgBox($hWnd, $Msg, $iIDTimer, $dwTime)
        $iNum_Time-=1
        ControlSetText($sTitle_Time, "", "Static2", $sText_1 & $iNum_Time & $sText_2)
    EndFunc

    Код:
    #include <Timers.au3>
    Global $iNum_Time=90, $sText_1='=*=*=*=*=*=*='&@CR&'      >> ', $sText_2=' << '&@CR&'=*=*=*=*=*=*=*', $sTitle_Time='Сообщение '
    $hGui = GUICreate("")
    $Timer = _Timer_SetTimer($hGui, 1000, '_UpdateMsgBox')
    MsgBox(262144 + 64, $sTitle_Time & $iNum_Time, $sText_1 & $iNum_Time & $sText_2, $iNum_Time)
    _Timer_KillTimer($hGui, $Timer)
     
    Func _UpdateMsgBox($hWnd, $Msg, $iIDTimer, $dwTime)
        $iNum_Time-=1
        ControlSetText($sTitle_Time, '', 'Static2', $sText_1 & $iNum_Time & $sText_2)
        ControlSetText($sTitle_Time, '', 'Button1', 'OK (' & $iNum_Time & ')')
        WinSetTitle($sTitle_Time, '', $sTitle_Time & $iNum_Time)
    EndFunc

    Всего записей: 1379 | Зарегистр. 15-08-2011 | Отправлено: 02:19 30-06-2017 | Исправлено: Andrey_A_A, 02:53 30-06-2017
    Artem_Butenko



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

    Цитата:
    #include <Timers.au3>
     
    Global $iNum_Time=9, $sText_1='Привет   >> ', $sText_2=' <<    Пока', $sTitle_Time='Сообщение'
    $hGui = GUICreate("")
    $Timer = _Timer_SetTimer($hGui, 1000, "_UpdateMsgBox")
    MsgBox(262144 + 64, $sTitle_Time, $sText_1 & $iNum_Time & $sText_2, $iNum_Time)
    _Timer_KillTimer($hGui, $Timer)
     
    Func _UpdateMsgBox($hWnd, $Msg, $iIDTimer, $dwTime)
        $iNum_Time-=1
        ControlSetText($sTitle_Time, "", "Static2", $sText_1 & $iNum_Time & $sText_2)
    EndFunc  

    Спасибо Вам большое, только "судороги" текста, при обновлении таймера прослеживаются, как и в других примерах. Наверное это особенность AutoIt...

    Всего записей: 707 | Зарегистр. 19-02-2008 | Отправлено: 02:49 30-06-2017 | Исправлено: Artem_Butenko, 02:52 30-06-2017
    Udavvf



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Иногда приносят компы на переустановку
    Наклепал поделку для резервирования профилей браузеров
    Шо скажете, может как-то можно улучшить?
    Подробнее...

    Всего записей: 7 | Зарегистр. 21-11-2011 | Отправлено: 22:18 01-07-2017 | Исправлено: Udavvf, 14:16 02-07-2017
       

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