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

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



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

    Цитата:
    ИМХО нет. IsWow64Process function  

    Ну так там ведь написано аналогично
       
    Код:
    if(IsWow64())
            _tprintf(TEXT("The process is running under WOW64.\n"));  32
        else
            _tprintf(TEXT("The process is not running under WOW64.\n")); 64

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 23:52 05-07-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dialmak,
    The process is running under WOW64 - перевод
    У меня на 32 системе функция возвращает 0.  

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 23:56 05-07-2014 | Исправлено: madmasles, 23:57 05-07-2014
    dialmak



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    картинко http://i.imgur.com/uiiNiX8.png
     
    Добавлено:

    Цитата:
    У меня на 32 системе функция возвращает 0.  

    Для 32 битной ОС эта функция бессмысленна и её нельзя применять там...
     
    Добавлено:

    Цитата:
    The process is running under WOW64 - перевод  

    Правильно. То есть идёт перенаправление в syswow64.
     
    Всё верно. Просто для 32 битной ОС нужно заглушку ставить.

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 23:56 05-07-2014 | Исправлено: dialmak, 00:04 06-07-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dialmak,
    Теперь понятно, что я не прав, спасибо за разъяснение (никогда не пользовался 64 системой).

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 06:21 06-07-2014
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сделал новую программу Sort_main_menu - сортировка ярлыков главного меню.
    Обновил программы create_lnk 0.3.1 и assotiations 1.5
     
     
    Обновлён Полный комплект справки, зеркало на rghost.ru 2014.07.09
    Подробнее...
     
    Английская оригинальная (v3.3.13.2) с чёрной темой - http://rghost.ru/56860880

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 17:35 08-07-2014 | Исправлено: AZJIO, 21:42 12-07-2014
    Kostyas

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно ли подключить (привязать) кнопки к ListView Item c поддержкой прокрутки.
    Спасибо.

    Всего записей: 181 | Зарегистр. 05-02-2003 | Отправлено: 20:59 13-07-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kostyas
    Цитата:
    Можно ли подключить (привязать) кнопки к ListView Item c поддержкой прокрутки.
    А цель какая? Какие действия будут производиться после нажатия этих кнопок?
     

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 10:42 14-07-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    comrades, подскажите, пожалуйста, туплю:
    есть скрипт для FastCopy, по таймеру в среднем на его работу уходит 0,8 секунды, как-то немало, заменил

    Код:
    $hWnd = WinWait("[CLASS:TTOTAL_CMD]", "", 3)
    WinActivate($hWnd)

    на

    Код:
    WinActivate("[CLASS:TTOTAL_CMD]")

    и получил 0,55 (0.53 изредка) секунд. В чем минус такого сокращения?
     
    З.Ы. Скрипт запускаю кнопкой с панели, может быть, повешу на хоткей - т.е. окно с высокой вероятностью останется активным.

    Всего записей: 6485 | Зарегистр. 28-01-2008 | Отправлено: 01:18 15-07-2014 | Исправлено: Skif_off, 01:20 15-07-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off, Добавьте в начале скрипта
    Код:
    Opt('WinWaitDelay', 0);или 5
    И можно не убирать WinWait, разница во времени будет практически не заметна. А почему Вы не проверяете ошибку возврата WinWait?

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 03:18 15-07-2014 | Исправлено: madmasles, 03:19 15-07-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Спасибо, AutoItSetOption как-то традиционно избегаю Не совсем понимаю, как работает, обязательно нужно вернуть дефолтное значение после функции?
    А не будет как со Sleep: можно поставить delay=1, но реально минимум 10?

    Цитата:
    А почему Вы не проверяете ошибку возврата WinWait?

    Скрипт запускается из окна ТС - т.е. оно существует, до начала цикла Select...Case проходит ~0,09 мс и вероятность, что что-то его свалит мне кажется низкой, а вот перехватить фокус что-нибудь сможет (модальные диалоговые окна в первую очередь, наверное). Поэтому как-то не заострил внимания (хотя таймаут добавил на автомате). Добавлю проверку, надо приучать себя к хорошему коду

    Всего записей: 6485 | Зарегистр. 28-01-2008 | Отправлено: 12:33 15-07-2014 | Исправлено: Skif_off, 12:41 15-07-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off,
    Если окно реально существует до запуска скрипта, то можно, ИМХО, заменить
    Код:
    $hWnd = WinWait('[CLASS:TTOTAL_CMD]', '', 3)
    ;~ на
    $hWnd = WinGetHandle('[CLASS:TTOTAL_CMD]')
    If Not $hWnd Then
        Exit ConsoleWrite('No Window' & @LF)
    EndIf
    И так должно быть чуть быстрее:
    Код:
    $i_RandomLength = 7
    $s_TempName = ''
    For $i = 1 To $i_RandomLength
         $s_TempName &= Chr(Random(97, 122, 1))
    Next
    ConsoleWrite($s_TempName & @LF)

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 13:07 15-07-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Спасибо, отлично получилось: попробовал варианты, 2 и 3 по времени приблизительно одинаковы (540-546 мс против 803-815 мс у 1го), но 3 с проверкой, оставил его.
    Opt("WinWaitDelay", 5) - вообще бомба: 46, 24 и 26 соответственно. Никакой работы с окнами кроме активации (и то на всякий случай, т.к. запуск осуществляется из активного окна) нет, delay=5 кажется безопасным

    Всего записей: 6485 | Зарегистр. 28-01-2008 | Отправлено: 18:23 15-07-2014
    DJ Tommy



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кстати, может кто подсказать как работать с форматом dbf?, Т.е. создание, открытие, работа с базами данных.  
     
    1.Создать
    2. Записать таблицу 3х3
    3. Изменить данные в поле 2х2
    4. сохранить

    Всего записей: 277 | Зарегистр. 12-11-2007 | Отправлено: 10:58 16-07-2014 | Исправлено: DJ Tommy, 11:02 16-07-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DJ Tommy
    Есть UDF, видел несколько тем на русскоязычном форуме.

    Всего записей: 6485 | Зарегистр. 28-01-2008 | Отправлено: 12:21 16-07-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    comrades, подскажите, пожалуйста, функцию _SendMessage обязательно использовать только с активным окном?

    Всего записей: 6485 | Зарегистр. 28-01-2008 | Отправлено: 22:44 19-07-2014 | Исправлено: Skif_off, 23:38 19-07-2014
    madmasles

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

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 08:15 20-07-2014
    Skif_off

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

    Код:
    _SendMessage($hWnd, $WM_TC_COMMAND, 2018, 0)
    If @error Then
        MsgBox(4096, "FastCopy", "_SendMessage Error: " & @error)
        Exit
    EndIf

    и теперь не знаю, как лучше - оставить активацию окна ТС или убрать? С @error еще надо разобраться.

    Всего записей: 6485 | Зарегистр. 28-01-2008 | Отправлено: 14:23 20-07-2014 | Исправлено: Skif_off, 14:24 20-07-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    Цитата:
    как лучше - оставить активацию окна ТС или убрать? С @error еще надо разобраться.
    Попробуйте сделать проверочные варианты:
    1. Сделать любое другое окно активным перед вызовом _SendMessage().
    2. Активировать окно ТС.
    Посмотрите результат.
    @error <> 0 вернется только при ошибке DllCall(), вероятность этого, ИМХО, стремится к 0.
    Надо бы еще проверить, что вернет _SendMessage() при успешном выполнении.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 18:09 20-07-2014
    Skif_off

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

    Цитата:
    Надо бы еще проверить, что вернет _SendMessage() при успешном выполнении.

    Возвращает 0.
    Проверял (только окно ТС не пробовал закрывать), работает, но опыта мало - не знал, как правильно и чем потом может вылезти в бок
    Пообщался приватно с MVV (автор TCFS2), он разъяснил и предложил просто убрать BOM, чтобы не трогать буфер обмена (у FastCopy проблема с BOM, отсюда все и пошло). Вроде получается, попутно решаются вопросы с несколькими запущенными ТС. Надеюсь, в скорости не сильно потеряю.  
     
    З.Ы. Еще раз спасибо за помощь

    Всего записей: 6485 | Зарегистр. 28-01-2008 | Отправлено: 19:27 20-07-2014 | Исправлено: Skif_off, 20:07 20-07-2014
    KOL48

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    На GUI-форме есть несколько чекбоксов. Каждый из них запускает установку программы из msi-пакета. По чекбоксу будет формироваться строка, которую планирую загнать в массив. Как организовать очередность установки программ, чтобы установка новой начиналась после завершения установки предыдущей?

    Всего записей: 44 | Зарегистр. 14-12-2005 | Отправлено: 14:34 22-07-2014 | Исправлено: KOL48, 16:21 22-07-2014
       

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