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

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pacho
    У меня так получилось:
    Код:
    HotKeySet("{UP}", "UP")
    $i = 0
    While 1
        Sleep(10)
        If $i > 0 Then
            MsgBox(0, "", "Нажата клавиша UP " & $i & " раз", 3)
            $i = 0
        EndIf
    WEnd
    Func UP()
        Sleep(1000) ;пауза между нажатиями.
        $i += 1
        Return $i
    EndFunc   ;==>UP
    Если пауза между нажатиями меньше 1 сек., то у меня считает хоть до 100 раз.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 14:22 22-03-2010 | Исправлено: madmasles, 14:24 22-03-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как зная PID получить имя процесса или путь к файлу, который вызвал процесс?
     
    Разобрался...

    Код:
    Func _ProcessGetPath($PID)
        If IsString($PID) Then $PID = ProcessExists($PID)
        $Path = DllStructCreate('char[1000]')
        $dll = DllOpen('Kernel32.dll')
        $handle1 = DllCall($dll, 'int', 'OpenProcess', 'dword', 0x0400 + 0x0010, 'int', 0, 'dword', $PID)
        $ret = DllCall('Psapi.dll', 'long', 'GetModuleFileNameEx', 'long', $handle1[0], 'int', 0, 'ptr', DllStructGetPtr($Path), 'long', DllStructGetSize($Path))
        $ret = DllCall($dll, 'int', 'CloseHandle', 'hwnd', $handle1[0])
        DllClose($dll)
        Return DllStructGetData($Path, 1)
    EndFunc

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 04:26 23-03-2010 | Исправлено: AZJIO, 05:55 23-03-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 05:26 23-03-2010
    Цитата:
    Как зная PID получить имя процесса или путь к файлу, который вызвал процесс?

    А если в шапку заглянуть?

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 07:21 23-03-2010
    AZJIO



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

    Код:
    ShellExecute($aPath[$i])
    Run('Explorer.exe '&$aPath[$i])

    В имени каталога имеется запятая, и естественно она воспринимается как разделитель параметров.
    Скрипт "SaveFolders" обновил на предыдущей странице, осталась проблема с каталогами в именах которых запятые.

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 08:24 23-03-2010 | Исправлено: AZJIO, 08:29 23-03-2010
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    У меня через ShellExecute папку с запятой в имени открывает, а через Run('Explorer.exe.... - не хочет.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 09:28 23-03-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 09:24 23-03-2010
    Цитата:
    В имени каталога имеется запятая, и естественно она воспринимается как разделитель параметров.

    А кавычки разве отменили?
     

    Код:
    Run('Explorer.exe "' & $aPath[$i] & '"')


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 17:10 23-03-2010
    ynbIpb



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

    Цитата:
    Доброго времени суток.  
     
    1) Я так понимаю, возможность декомпиляции в скрипт не предусмотрена?  
    2) Из-за чего вдруг могла появиться такая ошибка. Раньше не было  
     
    Line 7499  
    Error: subscript used witch non-array variable.  
     
     
    Что там, в этой строчке, я не знаю - софтина не моя.

     
    добрался до этой софтины, если порядок строк в декомпиленом виде тотже то вот эта строка:

    Код:
    7498  $FILELIST = _FILESEARCH($WINSOURCE)
    7499  _QUICK_SORT($FILELIST, 1, $FILELIST[0])

    Тоесть результат поиска не является массивом, вот и ошибка.
    _QUICK_SORT
     
    _FILESEARCH
     

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 20:23 23-03-2010 | Исправлено: ynbIpb, 20:34 23-03-2010
    Pacho



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    1) Как досрочно выйти из функции?
    2) Как сделать, чтобы при клике в трее на меню "Подключить", функция для обработки этого меню менялась на Disconnect(), при повторном клике - обратно на Connect()?

    Код:
    #NoTrayIcon
    AutoItSetOption("TrayAutoPause", 0)
    AutoItSetOption("TrayIconDebug", 1)
    AutoItSetOption("TrayMenuMode", 1)
     
    Global Const $Title = "Title"
     
    Dim $ConnectItem = TrayCreateItem("Подключить")
    TrayCreateItem("")
    Dim $ExitItem = TrayCreateItem("Выход")
    TraySetState()
     
    While True
      $msg = TrayGetMsg()
      Select
        Case $msg = $ConnectItem
          Connect()
        Case $msg = $ExitItem
          Terminate()
      EndSelect
    WEnd
     
    Func Connect()
      MsgBox(64, $Title, "Соединение установлено")
    EndFunc
     
    Func Disconnect()
      MsgBox(64, $Title, "Соединение разорвано")
    EndFunc
     
    Func Terminate()
      Exit
    EndFunc

     
    ynbIpb

    Цитата:
    добрался до этой софтины

    Каким образом? Декомпилировал?

    Всего записей: 263 | Зарегистр. 02-04-2005 | Отправлено: 22:25 23-03-2010 | Исправлено: Pacho, 22:50 23-03-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Pacho 23:25 23-03-2010
    Цитата:
    Как досрочно выйти из функции?

    Return.
     

    Цитата:
    Как сделать, чтобы при клике в трее на меню "Подключить", функция для обработки этого меню менялась на Disconnect(), при повторном клике - обратно на Connect()?


    Код:
    #NoTrayIcon
    #include
    <Constants.au3>
     
    Opt("TrayAutoPause", 0)
    Opt("TrayIconDebug", 1)
    Opt("TrayMenuMode", 1)
     
    Global Const $Title = "Title"
     
    Dim $ConnectItem = TrayCreateItem("Подключить")
    TrayCreateItem("")
    Dim $ExitItem = TrayCreateItem("Выход")
    TraySetState()
     
    While True
        Switch TrayGetMsg()
            Case $ConnectItem
                ConsoleWrite(TrayItemGetState($ConnectItem) & @LF)
     
                If BitAND(TrayItemGetState($ConnectItem), $TRAY_CHECKED) = $TRAY_CHECKED Then
                    Connect()
                Else
                    Disconnect()
                EndIf
            Case $ExitItem
                Terminate()
        EndSwitch
    WEnd
     
    Func Connect()
        MsgBox(64, $Title, "Соединение установлено")
    EndFunc
     
    Func Disconnect()
        MsgBox(64, $Title, "Соединение разорвано")
    EndFunc
     
    Func Terminate()
        Exit
    EndFunc

     
    Или так - тут меняется надпись на пункте в меню.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 23:35 23-03-2010
    AZJIO



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

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 00:44 24-03-2010
    ynbIpb



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

    Цитата:
    Каким образом? Декомпилировал?

    я имел ввиду, что не было нормального инета и вот только добрался и скачал.
    Декомпилировал декомпилером, но тут о нём не принято говорить, так что ссылку не дам.

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 08:17 24-03-2010
    ZOrK

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    возможно ли восстановить с помощью AutoIt приложение из трея (приложение загружается автоматически в трей) и максимизировать на весь экран если explorer.exe не будет загружен, и соответственно трей не виден. Может быть по PID?.
     
     
    (РЕШЕНО)
    http://forum.oszone.net/showthread.php?t=131812
     
     

    Всего записей: 147 | Зарегистр. 23-07-2001 | Отправлено: 09:53 24-03-2010 | Исправлено: ZOrK, 12:12 24-03-2010
    Pacho



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Как модифицировать 1-й вариант, чтобы галочка "Подключить" ставилась/снималась в самих функциях Connect()/Disconnect() (в случае удачного выполнения)?
    Надо добавить проверку состояния соединения (функция IsConnected()) при нажатии на иконку, и если соединение отвалилось, то снимать галку "Подключить".
    Для простоты функция  IsConnected() пусть будет:
    Код:
    Func IsConnected()
      Return 1
    EndFunc

    Всего записей: 263 | Зарегистр. 02-04-2005 | Отправлено: 10:37 24-03-2010
    Karrakurt

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я уже задавал подобный вопрос, но рискну еще раз это сделать =)
    Как определить наличие мультикастингового вещания в сети? Я уже что только не смотрел, кучу литературы по мультикастингу перечитал, но своими средствами справится не получается...
    Изложу конкретнее: имеется плеер VLC, он получая изображение с камеры вещает его в сеть по адресу 224.0.0.1 на порт 1234. Как определить идет вещание или нет? Дайте кто-нить направление пжл...

    Всего записей: 17 | Зарегистр. 29-07-2008 | Отправлено: 12:50 24-03-2010 | Исправлено: Karrakurt, 12:52 24-03-2010
    Pacho



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    11:37 24-03-2010
    По первому вопросу сделал так:
    Код:
    #NoTrayIcon
    #include <Constants.au3>
     
    Opt("TrayAutoPause", 0)
    Opt("TrayIconDebug", 1)
    Opt("TrayMenuMode", 1+2)
     
    Global Const $Title = "Title"
     
    Dim $ConnectItem = TrayCreateItem("Подключить")
    TrayCreateItem("")
    Dim $ExitItem = TrayCreateItem("Выход")
    TraySetState()
     
    Global $Connection = False
     
    While True
      Switch TrayGetMsg()
        Case 0
          ContinueLoop
        Case $ConnectItem
          If BitAND(TrayItemGetState($ConnectItem), $TRAY_CHECKED) <> $TRAY_CHECKED Then
            Connect()
          Else
            Disconnect()
          EndIf
        Case $ExitItem
          Terminate()
        Case $TRAY_EVENT_PRIMARYDOWN
          If IsConnected() == True Then
            MsgBox(64, $Title, "Соединение есть")
          Else
            MsgBox(64, $Title, "Соединения нет")
          EndIf
      EndSwitch
    WEnd
     
    Func Connect()
      TrayItemSetState($ConnectItem, $TRAY_CHECKED)
      $Connection = True
      MsgBox(64, $Title, "Соединение установлено")
    EndFunc
     
    Func Disconnect()
      TrayItemSetState($ConnectItem, $TRAY_UNCHECKED)
      $Connection = False
      MsgBox(64, $Title, "Соединение разорвано")
    EndFunc
     
    Func IsConnected()
      Return $Connection
    EndFunc
     
    Func Terminate()
      Exit
    EndFunc

    А вот как теперь сделать, чтобы скрипт делал опрос на предмет наличия соединения по клику на иконке и при его отсутсвии снимал галку с меню "Подключить"?
     
    ViSiToR
    Это, я так понимаю, от отладки осталось?
    Код:
    ConsoleWrite(TrayItemGetState($ConnectItem) & @LF)

     
     
    ynbIpb

    Цитата:
    Декомпилировал декомпилером

    Это значит любой скрипт можно декомпилить в исходный код?

    Всего записей: 263 | Зарегистр. 02-04-2005 | Отправлено: 14:13 24-03-2010 | Исправлено: Pacho, 14:27 24-03-2010
    ynbIpb



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

    Цитата:
    Это значит любой скрипт можно декомпилить в исходный код?

    Как вынуть скрипт из exe?
    О декомпилировании

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 14:37 24-03-2010
    XpycTMD

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

    Всего записей: 120 | Зарегистр. 17-01-2006 | Отправлено: 16:13 24-03-2010 | Исправлено: XpycTMD, 16:35 24-03-2010
    vladjan7

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день.  
    Подскажите, где можно скачать русский хепл к autoit, в котором можно  почитать по Автоматизации IE.
     
     
     
     
     

    Всего записей: 4 | Зарегистр. 06-11-2009 | Отправлено: 13:47 25-03-2010
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vladjan7
    Нет, к сожалению, русского перевода  Автоматизации IE.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 14:03 25-03-2010
    Pacho



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

    Всего записей: 263 | Зарегистр. 02-04-2005 | Отправлено: 15:03 25-03-2010
       

    Страницы: 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.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru