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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сделал примитивный ПрогрессБар

    Код:
    GUICreate("", 254, 14, -1, -1,$WS_POPUP+$WS_DLGFRAME,$WS_EX_TOOLWINDOW+$WS_EX_TOPMOST)
    $hProgress = GUICtrlCreateProgress(2, 2, 250, 10, 0x08)
    GUISetState()
    $i = 0
    While 1
        $i += 1
        GUICtrlSetData($hProgress,$i)
        Sleep(40)
        If $i = 20 Then $i = 0
    WEnd

    Идея была: стартует скрипт, сразу выскакивает Прогресс и двигает себе бегунок пока в фоне выполняется некая задача, которая его по окончании и убивает (Прогресс). Проценты выполнения не измеряет, просто бегунок двигает, чтобы показать, что что-то там работает. Однако, вот, не смог этот Прогресс заставить работать внутри скрипта – пока цикл выполняется, другую задачу не знаю как запустить, GUI то, как такового, нету, ни кнопок, ни окна, один Прогресс. Пока вышел из положения так:

    Код:
    ; стартует скрипт и запускает параллельно Прогресс
    $PID = Run(@AutoItExe & ' ProgressBar.au3',@ScriptDir)
    ...
    ; выполняет свою задачу и по окончании закрывает Прогресс
    ProcessClose($PID)

    Не посоветуете какое нибудь более цивилизованное решение?

    Всего записей: 2773 | Зарегистр. 20-03-2008 | Отправлено: 13:48 29-12-2014 | Исправлено: yozhic, 14:07 29-12-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    yozhic
    Цитата:
    Пока вышел из положения так
    Можно так сделать.
    Код:
    ;~ #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
     
    Global $hGUI, $iProgress
     
    $hGUI = GUICreate('Example', 200, 60, 10, 10)
    $iProgress = GUICtrlCreateProgress(10, 20, 180, 20, $PBS_MARQUEE)
    GUICtrlSendMsg($iProgress, $PBM_SETMARQUEE, 1, 50)
    GUISetState()
     
    MsgBox(64, 'Info', 'Скрипт что-то делает, а Progress работает')
     
    GUICtrlDelete($iProgress)
    MsgBox(64, 'Info', 'Progress удален')
    GUIDelete($hGUI)
    MsgBox(64, 'Info', 'Окно удалено')
    Exit

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 18:37 29-12-2014 | Исправлено: madmasles, 21:14 29-12-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Некоторые утилиты использую свои переменные среды, доступные внутри неё и дочерним процессам. Есть ли в AutoIt возможность прочитать значение подобной переменной среды, если известен PID процесса? Вроде того, как это делает Process Hacker.

    Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 04:24 30-12-2014
    madmasles

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

    Цитата:
    Есть ли в AutoIt возможность прочитать значение подобной переменной среды, если известен PID процесса?
    У меня так работает. Подробнее...

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 10:54 31-12-2014 | Исправлено: madmasles, 11:24 31-12-2014
    Skif_off

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

    Цитата:
    @AutoItX64 и с 64-процессами.

    Скорее всего сработает, а @AutoItX64=0 с 64-процессами вряд ли уже из-за NtQueryInformationProcess. Но любопытно, спасибо, сохранил.

    Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 12:57 31-12-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    Цитата:
    Скорее всего сработает
    Не работает в 64 системах, подробнее здесь.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 19:22 31-12-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Решение всё-таки, так понимаю, будет
    Раз зашёл разговор, есть ли потенциальная возможность использовать AutoItx86 и _WinAPI_GetProcessCommandLine() для получения командной строки х64 процесса, исходя из этого примера?

    Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 23:41 31-12-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    Цитата:
    есть ли потенциальная возможность использовать AutoItx86 и _WinAPI_GetProcessCommandLine() для получения командной строки х64 процесса, исходя из этого примера?

    У меня нет доступа к 64 системе, поэтому я пас.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 08:24 01-01-2015
    SLasH

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Как прочитать секцию "Realtek.NTx86.5.1" из этого INF-файла?

    Всего записей: 723 | Зарегистр. 08-10-2002 | Отправлено: 01:28 05-01-2015
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SLasH
    IniReadSection() не справляется?
    Есть ещё _IniString_ReadSection(), _IniVirtual_ReadSection(), _IniVirtualSPE_ReadSection().

    Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 06:27 05-01-2015 | Исправлено: Skif_off, 06:29 05-01-2015
    SLasH

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    Благодарю.
    IniReadSection() - возвращает толь 32k, а в примере данные секции вылезают за это ограничение
    _IniVirtual_ReadSection(), _IniVirtualSPE_ReadSection() - не справились. Даже окно не появилось:

    Код:
    #include <IniVirtualSPE.au3>
    #include <Array.au3>
     
    $iniText = FileRead('E:\tmp\Netrtle.inf')
    $aRes = _IniVirtualSPE_ReadSection($iniText, 'Realtek.NTx86.5.1')
    _ArrayDisplay($aRes, 'Массив "ключ | значение"')

    _IniString_ReadSection() - справился

    Всего записей: 723 | Зарегистр. 08-10-2002 | Отправлено: 09:25 05-01-2015
    ViSiToR



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

    Цитата:
    _IniVirtual_ReadSection(), _IniVirtualSPE_ReadSection() - не справились. Даже окно не появилось

    Видимо потому что используются рег. выражения, и не учитываются спец. символы в названий секции.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:30 05-01-2015
    yozhic



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно ли средствами AutoIt передать On Error Resume Next объекту?
    В таком случае:

    Код:
    $g_oWordApp = ObjCreate("Word.Application")
    $g_oActDoc = $g_oWordApp.Documents.Add()
    For $oWord In $g_oActDoc.Words
        ; On Error Resume Next
        $oSpSugg = $oWord.GetSpellingSuggestions()
    Next
     

    GetSpellingSuggestions иногда вызывает ошибку. Как сделать, чтобы VBS в этом случае не завершался, а пропускал это место?

    Всего записей: 2773 | Зарегистр. 20-03-2008 | Отправлено: 16:27 05-01-2015 | Исправлено: yozhic, 16:42 05-01-2015
    AZJIO



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

    Цитата:
    Видимо потому что используются рег. выражения, и не учитываются спец. символы в названий секции.
    Экранируются.
     
    SLasH
    Учтён флаг в регулярных выражениях? который нужно добавит с учётом новой версии автоит, о чём сказано в теме на оф.форуме.
     
    До кучи там в шапке альтернативные варианты, например IniEx.au3

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 17:10 05-01-2015 | Исправлено: AZJIO, 17:11 05-01-2015
    SLasH

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

    Цитата:
    Учтён флаг в регулярных выражениях? который нужно добавит с учётом новой версии автоит

    Не нашёл я про какой флаг идёт речь. Пример можно?

    Всего записей: 723 | Зарегистр. 08-10-2002 | Отправлено: 17:29 05-01-2015
    yozhic



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

    Цитата:
    Можно ли средствами AutoIt передать On Error Resume Next объекту?

    Нашёл!
    _WordErrorHandlerRegister()

    Всего записей: 2773 | Зарегистр. 20-03-2008 | Отправлено: 21:22 05-01-2015
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SLasH
    Добавить в начале каждого регулярного выражения (*LF).

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 01:34 06-01-2015 | Исправлено: AZJIO, 01:36 06-01-2015
    SLasH

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Может стоит версию обновить, чтобы не нужно было ничего исправлять в вашей модуле?
    И хотелось бы вариант справки AutoIt3 с белым фоном, как раньше. Это про вашу сборку AutoIt.

    Всего записей: 723 | Зарегистр. 08-10-2002 | Отправлено: 21:09 06-01-2015 | Исправлено: SLasH, 21:09 06-01-2015
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SLasH
    Я в Linux'е, надолго. Ичпользуй IniEx.au3, а если будет проблема проси автора этой библиотеки подкорретировать, я думаю он сам в этом заинтересован и продвигает её в качестве альтернативы моему варианту. Выложи свой ini в его теме, думаю тут же исправит, если это вообще требуется, она под новую версию как раз таки сделана.
    На счёт сборки AutoIt ответ тот же. Перепакуй для себя с белой справкой, тем более там версия справки даже старая. Если всё равно справку менять то я и не придерживался идеала, всё равно через месяц справка устаревала. Так же Notepad++  я выкладывал отдельно, тоже перепакуй с новым 6.5.3, последней в которой нормально работает автозавершение.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 12:56 08-01-2015
    AkroMen



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте,может кто-то помочь модернизировать данный скрипт
    Хотелось бы вместо зацикленного нажатия на одну и ту же кнопку сделать так,чтобы данная кнопка в моем случае "1" нажималась в том случае если я нажимаю клавишу R

    Код:
    WinActivate( "Игра")
    Global $Paused
    HotKeySet("{F2}", "Start")
    HotKeySet("{F1}", "Stop")
    HotKeySet("{F4}", "Close")
     
     
    While 1
    Sleep(100)
    WEnd
     
    Func Start()
    While 1
    Sleep(500)
    Send("{1}")
     
     
    ToolTip('Script is "START"',0,0)
    WEnd
    ToolTip("")
    EndFunc
     
    Func Stop()
    $Paused = NOT $Paused
    While $Paused
    ToolTip('Script is "STOP"',0,0)
    WEnd
    ToolTip("")
    EndFunc
     
    Func Close()
    Exit 0
    EndFunc

    Всего записей: 22 | Зарегистр. 29-04-2014 | Отправлено: 20:54 10-01-2015
       

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