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


Система IP-видеонаблюдения "Линия". Скачать бесплатную демо-версию для 16 камер. НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаФотогалереяГазетаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)

Модерирует : gyra, Maz

Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему    

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

AutoIt3
(Часть 1)

 
 
Домашняя страница: http://www.autoitscript.com
Страница загрузки: http://www.autoitscript.com/autoit3/downloads.php
 
Описание:

Цитата:
AutoIt v3 - это язык для написания сценариев, напоминающий BASIC. Основным его назначением является автоматизация работ с Windows GUI (графическим интерфейсом пользователя MS Windows). Для выполнения этой сложной задачи предоставляется комбинация испытанных методов, включающих в себя эмуляцию нажатий комбинаций клавиш клавиатуры, перемещения указателя мыши, управление окнами и их визуальными элементами. Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях, когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны.
Умеет он очень и очень многое! Бесплатный.

 
Помощь по AutoIT:
  • Справку на русском (и не только) вы всегда(?) сможете найти тут
  • Учебник по AutoIt для начинающих
  • Видео-руководства на YouTube (англ.)
  • AutoIt v3: Your Quick Guide (652 КБ) - Ваш быстрый гид в мир AutoIt-а (книга в формате pdf) - Та же книжка online.
  • Справочник по командам rundll32
  • Справка WinAPI (Win 32 API по шагам)
  • Русский справочник по API-функциям
  • Полезная информация по WinAPI на русском
  • Помощь по регулярным выражениям
  • Tutorial on DllCall() & DllStructs - Небольшое (пока?) руководство по использованию функции DllCall*()
     
     
    Ресурсы, посвящённые AutoIt
  • AutoIt в Википедии
  • AutoIt Russian Community - Русское сообщество AutoIt
  • Jabber-конференция для обсуждения мелких вопросов касающихся AutoIt
  • Обзор скриптового языка AutoIt (рус.)
  • AutoIt на Yahoo! Groups
  • Раздел в конфиренции OSzone.net, посвящённый AutoIt
  • Пополняющийся со временем сайт с полезными утилитами и функциями на AutoIt
  • Коллекция AutoIt-скриптов от Sanja Alone
  • Коллекция AutoIt-скриптов от MSFN (могут быть устаревшие).
  • Коллекция AutoIt-скриптов от AZJIO
     
     
    !!! Полезные советы и заметки - новичкам и не только
     
     
  • Рекомендации по написанию скриптов
     
     
    Инструменты для AutoIt:
  • AutoIt Path Switcher - Переключение пути к папке AutoIt.
  • AutoIt3Wrapper [Страница закачки] - Программа для компиляции скрипта с дополнительными возможностями (добавление значка, описания и т.п).
  • Koda (724 Kb) - Визуализация работы с GUI - аналог Visual Basic.
  • CodeWizard (400 Kb) - нечто простенькое на вариант Koda.
  • AutoItMacroGenerator (34 Kb) - Записывает в реальном времени действия пользователя в AutoIt-код.
  • ScriptWriter (78 Kb) - Аналог AutoItMacroGenerator.
  • API Constants (1042 Kb) - Утилита для просмотра всех констант API-функции и не только.
  • Страница закачки утилит, которые идут в отдельной поставке редактора SciTE.
  • AutoIt-меню для браузера Opera.
     
    Готовые скрипты и программы с открытым кодом на AutoIt:
  • Desktop Icons Restorator - Скрипт-программа для сохранения/восстановления позиции значков рабочего стола.
  • CaptureIt - Утилита для захвата изображений с экрана.
  • SwitchIt - Скрипт для конвертирования выделенного текста.
  • Скрипт раскраски кода AutoIt для публикации в форумах
     
    Общие вопросы и решения на Autoit:
  • Обработчик скриптов добавляющий отладчик (debugger) - Последняя версия: AutoItScript Add Debugger
  • Интеракция между несколькими скриптами
  • Пример использование интеракции между скриптами - Добавление элементов GUI с внешнего модуля
  • Чтение и запись данных с/в окна/о SciTE
  • Пример автообновления версии своего приложения
  • Копирование большого файла с отображением данных прогресса
  • Создание динамического меню в Tray Icon (значок в области уведомлений)
  • Пример создания своего мастера (Wizard)
  • Метод, позволяющий запускать код VBS без создания временных файлов
  • Описание функции GUIRegisterMsg()
  • Пример перехвата вводимых символов с клавиатуры
  • Пример деактивирования TabItem
  • Пример вывода лога в Edit-поле (с поддержкой форматирования текста)
  • Пример остановки/начало выполнения скрипта + Слежение за буфером обмена с заменой неподдерживаемых в имени файла символов
  • Подключение приложения (GUI) к буферу обмена
  • Пример использования меню с значками (ModernMenu.au3) -> Список программ в меню значка в системном трее
  • Пример подсчёта интервала времени между нажатиями клавиш
  • Слежение нажатых элементов в текущем окне (под курсором)
  • Написание instant messaging Бота на AutoIt
  • Способ, позволяющий посылать нажатие клавиши в неактивное окно (не путать со свёрнутым)
  • Сервер <=> Клиент - Пример передачи файла
  • Пример отображения только элементов GUI (без самой оболочки)
  • Модуль, превращающий ваше приложение в Trial-версию
  • Слежение за выделенным текстом и с последующим его помещением в файл
     
    Отдельные функции и библиотеки (UDF):
  • Функции, относящиеся к интернету
  • Функции для работы с процессами и окнами
  • Функции для работы с файлами
  • Функции для GUI/Tray
  • Системные функции
  • Разное (то, что не подпадает под другие категории)
     


     
    За шапкой следит ViSiToR  

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 14:47 12-01-2009 | Исправлено: Maz, 11:50 17-04-2017
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AITap
    Либо немного округлить при получение чисел: Round

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 17:35 23-04-2009
    AITap

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо! Всё получилось:  

    Код:
    GUICtrlSetData($Edit1, GUICtrlRead($Edit1) & "n = " & $z & @TAB & @TAB & "v1 = " & StringFormat("%.9e",$d1[$z]) & @TAB & @TAB &  "v2 = " & StringFormat("%.9e",$d2[$z]) & @TAB & @TAB)

    Всего записей: 19 | Зарегистр. 02-03-2009 | Отправлено: 17:47 23-04-2009
    Quosio

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

    Цитата:
    1. попробуйте заменить ControlSend на Send  
    2. проверьте If-ы, наподобии этого: If _IsPressed("14", $dll) And IsArray($Meepo4) Then  
    может как-то не так ищется пиксел временами....  
    3. а как выход из этого цикла происходит:  While 1  Sleep(15) ?  
    4. вот это проверьте, что бы каждый раз сробатывало:

     
    1. Сейчас попробую.
    2. Все if'ы неоднократно проверял, все работает -ИДЕАЛЬНО-, но вот задерржка то больше то меньше
    3. Из цикла в функции Dagger выход не нужен, выход нужен только из функции NoDagger который исправно срабатывает, проверял путем MsgBox'ов.
    Логика такая, Checker проверяет запустить Dagger или NoDagger, если запущен NoDagger то он будет проверять не пора ли выйти из цикла и запустить Checker чтобы опять проверить, если этого не требуется, то продолжается NoDagger. Если запустился Dagger то он должен работать пока пользователь не выключит autoit ^_^
    4. Срабатывает!

    Всего записей: 15 | Зарегистр. 16-04-2009 | Отправлено: 19:47 23-04-2009
    deadbead

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Найден способ посылать нажатие клавиши в не активное (не путать со свернутым) окно клиента RFO!
     
    Вот рабочий код для AutoIt который посылает нажатие кнопки F1
     

    Код:
    #Include <WinAPI.au3>
     
    $hWnd = WinGetHandle("RF Online")
    _SendMessage($hWnd, 0x6, 0x1)
    ControlSend($hWnd, "", "", "{F1}")
    _SendMessage($hWnd, 0x6, 0x1)

     
    Напрашивается не утешительный вывод: Функция ControlSend в AutoIt отбирает у окна "фокус".... Что не есть гуд...

    Всего записей: 19 | Зарегистр. 02-12-2008 | Отправлено: 21:34 23-04-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    deadbead 21:34 23-04-2009
    Цитата:
    Напрашивается не утешительный вывод: Функция ControlSend в AutoIt отбирает у окна "фокус".... Что не есть гуд...

    нет. попробуйте предать что нибуть в поле ввода в Блокноте - фокус у окна пропадет?? - именно, нет.
     
    Просто ваша технология работы специфичная, что вызывает подобную реакцию.

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 00:34 24-04-2009
    deadbead

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

    Цитата:
    фокус у окна пропадет??

     
    Вы заметили, что слово фокус в моем сообщении в кавычках?
     
    Имелось ввиду, что если передать окну сообщение о том что оно якобы активно
    Код:
    _SendMessage($hWnd, 0x6, 0x1)  
    то оно (окно) считает себя активным до выполнения
    Код:
    ControlSend($hWnd, "", "", "{F1}")
    . После выполнения ControlSend окно себя активным не считает....

    Всего записей: 19 | Зарегистр. 02-12-2008 | Отправлено: 00:45 24-04-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Jabber UDF - уже немного рабочая

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 10:10 24-04-2009
    Quosio

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Решил проблему с пойнтером, возможно кому-нибудь понадобится такой скрипт. Вот он:
     

    Код:
     
    #Include <Memory.au3>
    Global $str, $a, $ptr, $var, $data
    $var = 1
    $str = "ptr var1"
    $a = DllStructCreate($str)
    if @error Then
        MsgBox(0,"","Error in DllStructCreate " & @error);
        exit
    endif
    DllStructSetdata($a,"var1",1)
    $ptr = DllStructGetPtr($a)
    _MemMoveMemory(0x00963c44+0x60C54, $ptr, 1)
    $data = DllStructGetdata($a,1)
    $var = $data  
    MsgBox(0,"DllStruct","Struct Size: " & DllStructGetSize($a) & @CRLF & _
            "Struct pointer: " & DllStructGetPtr($a) & @CRLF & _
            "data:" & @CRLF & _
            "Var value " & $var & @CRLF & _
            DllStructGetdata($a,1))
     

    Результат таков: Значение адресса 00963c44 со смещением 0x60c54 (смещение пойнтера вы сами высчитаете) переводится в переменную $var. Очень удобная и полезная штука, особенно тем кто занимается дебаггингом и реверсингом чужих программ (мне)

    Всего записей: 15 | Зарегистр. 16-04-2009 | Отправлено: 12:35 24-04-2009
    AITap

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте! У меня снова проблема и снова с расчётом скоростей.
    Существуют две переменных, $d1 и $d2.
    Считаются они по таким формулам:

    Код:
    $d1[$z] = $v * $M / ($M + $z * $mu )
    $d2[$z] = $v * ( $M ^ $z ) / ( ($M + $mu ) ^ $z

    Причём $v = 10^1 (м/с), $M = 10^2(кг), $mu = 10^-2(кг), а $z (с) - натуральное от 1 до 10^4.
    Если расчитывать эти величины по вышеуказанной формуле, то к $z = 150 $d2[$z] уже будет стремиться к бесконечности (-1.#IND).
    Мне посоветовали расчитывать их, сначала умножив скорости ($v - начальная скорость, $mu - скорость изменения массы) на 60 и расчитывая всё, соотвестсвенно, в минутах, а потом делить на 60 (для получения ответов в м/с). Вот получившийся у меня код:

    Код:
    $d1[$z] = $v * $M / ($M + $z * $mu ) ; проблема точно не в этом
    $d2[$z] = ( 10 * $v * $M ^ ( $z / 10 ) / ($M + $mu * 10 ) ^ ( $z / 10 ) ) / 10
     

    Но тогда на первых n-1 результатах (причём n равно числу, на которое я умножил параметры $d2) $d2[$z] получается МЕНЬШЕ $d1[$z], что принципиально невозможно (и очень легко доказывается при $z < 4), т.е. теряется точность расчётов. Как бы так сделать, чтобы и точность не терялась, и числа в бесконечность не уходили?
     
    Есть идея для первых n расчётов использовать старую формулу. Реализую, отпишусь.
     
    Добавлено:
    Получилось следующее:
    Подробнее...
     
    Вроде работает.  
     
    Результаты, правда, выглядят ужасно:

    Код:
    n = 100        v1 = 9.090909090909092        v2 = 9.048826308977811        v1 > v2
    n = 101        v1 = 9.082652134423253        v2 = 9.039786522455358        v1 > v2
    n = 102        v1 = 9.074410163339383        v2 = 9.073596473237613        v1 > v2
    n = 103        v1 = 9.066183136899365        v2 = 9.064952532056541        v1 > v2
    n = 104        v1 = 9.057971014492754        v2 = 9.056316825506508        v1 > v2

     
    Пришла в голову идея: генерировать этот самый пресловутый n динамически. Разрывов на графике нет, но точность, увы, небольшая. Вот конечный код:
    Подробнее...
     
    P.S. Извиняюсь за многобукаф.

    Всего записей: 19 | Зарегистр. 02-03-2009 | Отправлено: 16:31 24-04-2009 | Исправлено: AITap, 18:10 24-04-2009
    Quosio

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AITap используйте команды round или одну из команд серии string.
    Это случайно не Вы точно такой же вопрос на форуме Autoitscript спрашивали ? Потому-что там я на него уже ответил
     
    ViSiToR Вы можете поместить в шапку темы NomadMemory.au3 ? Это очень-очень важный UDF (на мой взгляд)

    Всего записей: 15 | Зарегистр. 16-04-2009 | Отправлено: 21:05 24-04-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Quosio 21:05 24-04-2009
    Цитата:
    поместить в шапку темы NomadMemory.au3

    Добавил.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 23:41 24-04-2009
    Quosio

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Опять мне никто не может помочь на Autoitscript.com, взываю к Вашей помощи!
    Возможно ли нажав на элемент в таблице выводимой через _ArrayDisplay записать значение этого элемента в некую переменную?
    Допустим, _ArrayDisplay выдает элемент стоящий в 3ий строке, 4м столбце: "100"
    Тык тык на него и значение 100 вводится в переменную $var.

    Всего записей: 15 | Зарегистр. 16-04-2009 | Отправлено: 22:58 25-04-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Quosio 22:58 25-04-2009
    Цитата:
    Возможно ли нажав на элемент в таблице выводимой через _ArrayDisplay записать значение этого элемента в некую переменную?

    Возможно, нужно править _ArrayDisplay в библиотеке Array.au3. Нужно к нему добавить обработчик WM_NOTIFY... поищите на офф. форуме примеры с этим обработчиком.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 00:04 26-04-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Quosio 22:58 25-04-2009
    Цитата:
    Опять мне никто не может помочь на Autoitscript.com, взываю к Вашей помощи!  
     Возможно ли нажав на элемент в таблице выводимой через _ArrayDisplay записать значение этого элемента в некую переменную?  
     Допустим, _ArrayDisplay выдает элемент стоящий в 3ий строке, 4м столбце: "100"  
     Тык тык на него и значение 100 вводится в переменную $var.

     
    ViSiToR, если не ошибаюсь уже где то это обсуждали? И если не ошибаюсь вывод был, что в этом случае - лучше написать свой вывод массива в окно, так как у _ArrayDisplay своя специфика и т.д., из за которой могут возникать ошибки.
     
    но в любом случае обрабатывать WM_NOTIFY событие $NM_CLIC - можно посмотреть пример в справке по UDF функциям, хотя бы на примере _GUICtrlListView_Create.

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 01:43 26-04-2009
    Quosio

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо Вам sproxy и ViSiToR!

    Всего записей: 15 | Зарегистр. 16-04-2009 | Отправлено: 11:53 26-04-2009
    qjlex

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день мне нужно написать скрипт который будет постоянно проверять один процесс например rd.exe и как-только этот процесс перестанет передавать пакеты в интернет то начать в окне нажимать кнопки. Заранее спасибо.

    Всего записей: 11 | Зарегистр. 21-04-2009 | Отправлено: 16:30 26-04-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    qjlex 16:30 26-04-2009
    Цитата:
    мне нужно написать скрипт

    Ну так а в чём проблема?

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 16:52 26-04-2009
    qjlex

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я просто не знаю как написать чтобы проверялось идут ли пакеты в инет или нет от процесса.

    Всего записей: 11 | Зарегистр. 21-04-2009 | Отправлено: 17:09 26-04-2009
    fox96



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Тыкните ссылкой или в хелп:
    Есть прога в ней Class типа - TRichEdit, в нём постоянно добавляется текст (скрол идёт снизу вверх).
    Нужно найти из последних 10 строк - определенный шаблон, ну и дальше уже разберусь.
    Спасибо.

    Всего записей: 42 | Зарегистр. 22-10-2005 | Отправлено: 19:08 26-04-2009
    qjlex

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите со скриптом который проверяет отдает rf.exe пакеты в интернет или нет.

    Всего записей: 11 | Зарегистр. 21-04-2009 | Отправлено: 21:41 26-04-2009
    Открыть новую тему    

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

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)
    Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2017

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru