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

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

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

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

   

AddXL

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

AutoIt3

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

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

 
Помощь по AutoIT:
  • Справку на русском (и не только) вы всегда(?) сможете найти тут
  • Справочник по командам rundll32
  • Русский справочник по API-функциям
  • Помощь по Регулярным выражениям
  • AutoIt v3: Your Quick Guide (652 КБ) - Ваш быстрый гид в мир AutoIt-а (книга в формате pdf)
     
    Инструметы для 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:
  • Коллекция AutoIt скриптов от Sanja Alone
  • Коллекция скриптов на http://msfn.org
  • Пополняющийся со временем сайт с полезными утилитами и функциями на AutoIt
  • Desktop Icons Restorator - Скрипт-Программа для сохранения/восстановления позиции иконок р.стола.
  • CaptureIt - Утилита предназначена для захвата изображений с вашего экрана.
  • SwitchIt - Скрипт для конвертирования выделенного текста
  • Скрипт расскраски кода AutoIt для публикации в форумах
     
    Общие вопросы и решения на Autoit:
  • Обработчик скриптов добавляющий отладчик (debugger)
  • Интеракция между несколькими скриптами
  • Пример использование интеракции между скриптами - Добавление элементов GUI с внешнего модуля
  • Копирование большого файла с отображением данных прогресса
  • Создание динамического меню в Tray Icon (значёк в области уведомления)
  • Пример создания своего мастера (Wizard)
  • Метод позволяющий запускать код VBS не создавая временных файлов
  • Описание функции GUIRegisterMsg()
  • Пример перехвата вводимых символов с клавиатуры
  • Пример деактивирования TabItem
  • Пример вывода лога в Edit-поле (с поддержкой форматирования текста)
  • Пример остановки/начало выполнения скрипта + Слежение за б.обмена с заменой неподдерживаемых в имени файла символов
  • Пример использования меню с иконками (ModernMenu.au3) -> Список программ в меню значка в системном трее
     
  • Как по PID процесса вычислить путь запускаемого файла
  • Получение IP по подключенному сокету
     
    Отдельные функции (UDF):
  • Функции Отключения/Подключения к Интернету
  • Функция проверки подключения к Интернету
  • Функция для получения структуры директории включая подкаталоги
  • Функция для поиска в файлах
  • Функция для смены разрешения экрана
  • Функция для смены раскладки клавиатуры в определённом окне
  • Функция для получения списка процессов с допол. инфой (путь к исполняемому файлу и др.)
  • Функции и пример для отображения детального процесса закачки файла
  • Функция (и пример использования) для отображения стильного диалога “О Программе” - [Усовершенствованная версия]
  • Функция возвращает пронумерованный список всех классов определённого окна + функция получения хендлов для этих классов
  • Функция для получения заголовка окна (или его идентификатора) по ID процесса (PID)
  • Функция _StringIsUTF8Format() + _StringToUTF() - Первая проверяет если строка содержится в UTF-8 формате, вторая преобразовывает строку в UTF-8 формат
  • Функция _FileOpenDialogEx - Возвращает массив (или строку) с полными путями к выбранным файлам
  • _AU3_Lib* Функции - Предназначены для обработки подключаемых библиотек через #include
  • Функция транслитерации строки
  • Расширенная библиотека для работы с реестром
     
    За шапкой следит ViSiToR  

  • Всего записей: 6 | Зарегистр. 24-11-2005 | Отправлено: 13:20 24-11-2005 | Исправлено: Maz, 11:50 17-04-2017
    Maza_Faka



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

    Цитата:
    поподробнее


    Код:
     
    FileWrite(@ScriptDir & "\ping.log", $sOutput)
     


    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:43 25-11-2008
    hunter19

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

    Всего записей: 86 | Зарегистр. 28-02-2007 | Отправлено: 09:33 25-11-2008
    APSTENU



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

    Цитата:
    Заголовок блокнота как называется?

     
    Заголовок правильно называется, я его на всякий в Window Info сверял

    Всего записей: 14 | Зарегистр. 22-11-2008 | Отправлено: 10:57 25-11-2008
    Maza_Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    APSTENU
    Показ всплывающих подсказок (a.k.a. Tooltips) в системе не отключен?

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 11:26 25-11-2008
    APSTENU



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

    Цитата:
    Показ всплывающих подсказок (a.k.a. Tooltips) в системе не отключен?

    нет, не отключён, но у меня стоит Tool Tip Fixer который исправляет показ неполных всплывающих сообщений в системном трее...
    видимо в это всё и упирается, снесу его и посмотрю что получистя

    Всего записей: 14 | Зарегистр. 22-11-2008 | Отправлено: 12:59 25-11-2008
    Zwook

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

    Код:
     
    #include <GUIConstantsEx.au3> ;
    #include <WindowsConstants.au3> ;;
     
    GUICreate("GUI Window") ;Создает диалоговое окно которое помещено в центре экрана.
    GUISetState(@SW_SHOW) ;Показывает GUI.
     
    $Help = GuiCtrlCreateButton("Help", 0, 0, 50, 20)
    $TestGui= InputBox("Окно для проверки GUI:", "Вставьте сюда любое число:")
     
    GuiSetState()
    while GuiGetMsg() <> $GUI_EVENT_CLOSE
    $msg = GuiGetMsg()
    Select
    Case $msg = $Help
    MsgBox(1, "Help", "1 2 3 4 5.")
    MsgBox(1, "Help", "One two three four five.")
    EndSelect
    Wend
     
     
    If $TestGui = >1 Then
        $TestGui = 0
    EndIf
    If $TestGui = <1 Then
        $TestGui = Apple
    EndIf
     
    While 1
        sleep(4000)
        MsgBox(0, "Box", $TestGui)
    Wend
     

     
    В этом GUI сразу 4 вопроса:
    ~ Почему после запуска скипта, GUI выполняется, а While/Wend не запускается?
    ~ Как сделать так, чтобы GUI выключался вместе со скриптом при нажаии горячей клавиши. Допустим у меня вот так вот:

    Код:
     
    Global = $Go
     
    HotKeySet("{ESC}", "Off")                                                                                            
    HotKeySet("{F1}", "On")
     
     
    While 1
     Sleep(300)
      If $Go Then Exec()
       WEnd
        
    Func On()                                                                                        
     $Go= Not $Go
    EndFunc                              
    Func Off()
     Exit 0
    EndFunc  
     

    ~ Допустим я хочу, чтобы любой пользователь моего скрипта мог ввести в inputbox 1,2,3,4 (Или любое последователность чисел) где 1,2,3,4 это изменение переменных $a,$b,$c,$d это возможно?
    ~ Как делать отступ в MsgBox() ? Допустим я не хочу чтобы сообщение шло до конца MsgBox() а начиналось с новой строки.

    Всего записей: 83 | Зарегистр. 21-11-2008 | Отправлено: 17:27 25-11-2008 | Исправлено: Zwook, 17:35 25-11-2008
    Loopback



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

    Цитата:
    ~ Почему после запуска скипта, GUI выполняется, а While/Wend не запускается?

    Почему же, первый While...Wend работает. До второго скрипт дойдет только после выхода из первого (т.е. при закрытии GUI).

    Цитата:
    ~ Как сделать так, чтобы GUI выключался вместе со скриптом при нажаии горячей клавиши. Допустим у меня вот так вот:

    Выход по команде Exit из функции, привязанной к горячей клавише, закроет и GUI. Или я чего-то не понял?

    Цитата:
    ~ Допустим я хочу, чтобы любой пользователь моего скрипта мог ввести в inputbox 1,2,3,4 (Или любое последователность чисел) где 1,2,3,4 это изменение переменных $a,$b,$c,$d это возможно?

    Да, но придется так или иначе парсить строку, следить за правильностью ввода и т.д. Простейший способ - StringSplit.

    Код:
    $aSplit = StringSplit($s_input, ",")
    If $aSplit[0] = 4 Then
        $a = $aSplit[1]
        $b = $aSplit[2]
        $c = $aSplit[3]
        $d = $aSplit[4]
    Else
        MsgBox(0, "Ошибка", "Неправильный ввод.")
    EndIf

    Или регэкспом (также проверяет, что введены именно 4 числа, разделенных запятыми):

    Код:
    $aRes = StringRegExp($s_input, "(\d+),(\d+),(\d+),(\d+)", 1)
    If IsArray($aRes) Then
        $a = $aRes[0]
        $b = $aRes[1]
        $c = $aRes[2]
        $d = $aRes[3]
    Else
        MsgBox(0, "Ошибка", "Неправильный ввод.")
    EndIf

    Но по возможности, я бы сделал ввод в отдельных запросах, или сделал бы второй диалог с раздельными полями.

    Цитата:
    ~ Как делать отступ в MsgBox() ? Допустим я не хочу чтобы сообщение шло до конца MsgBox() а начиналось с новой строки.

    Отступов как таковых нет, но строку можно разорвать, вставив @CR:
    MsgBox(0, "Test", "First line" & @CR & "Second line")

    Всего записей: 174 | Зарегистр. 08-03-2002 | Отправлено: 18:11 25-11-2008
    Zwook

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

    Цитата:
    Почему же, первый While...Wend работает. До второго скрипт дойдет только после выхода из первого (т.е. при закрытии GUI).  

     
     
    А как нибудь можно сделать так, чтобы скрипт работал даже если GUI остается, при этом не запихивать GUI в основной цикл?
     

    Цитата:
    Выход по команде Exit из функции, привязанной к горячей клавише, закроет и GUI. Или я чего-то не понял?  

     
    У меня почему-то скрипт заканчивает продолжатся, а GUI остается.
     
     

    Цитата:
    Но по возможности, я бы сделал ввод в отдельных запросах, или сделал бы второй диалог с раздельными полями.  

     
    Чуствую себя идиотом потому, что не додумался до этого.
     

    Цитата:
    Отступов как таковых нет, но строку можно разорвать, вставив @CR:  
    MsgBox(0, "Test", "First line" & @CR & "Second line")

     
    Yes Sir!

    Всего записей: 83 | Зарегистр. 21-11-2008 | Отправлено: 19:12 25-11-2008 | Исправлено: Zwook, 19:15 25-11-2008
    Loopback



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

    Цитата:
    А как нибудь можно сделать так, чтобы скрипт работал даже если GUI остается, при этом не запихивать GUI в основной цикл?

    В принципе, GUI существует независимо от цикла, и будет существовать, пока скрипт не закончит работу. Но чтобы он не завершился раньше времени, какой-то цикл все равно должен быть.

    Цитата:
    У меня почему-то скрипт заканчивает продолжатся, а GUI остается.

    Раз GUI остается - значит скрипт продолжает работать. Нужно копать, наверняка где-то ошибка, либо клавиша не зарегистрировалась, либо еще что-то. Вот простейший скрипт, все работает:

    Код:
    #include <GUIConstantsEx.au3>
     
    HotKeySet("{F1}", "ExitFunc")
     
    GUICreate("GUI")
    GUISetState()
     
    While GUIGetMsg() <> $GUI_EVENT_CLOSE
    Wend
     
    Func
    ExitFunc()
        Exit
    EndFunc

    Всего записей: 174 | Зарегистр. 08-03-2002 | Отправлено: 20:51 25-11-2008
    CrazyNNM



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    вот есть программка
    http://files.kmvcity.ru/9262705
    только у меня проблеммка, скрипты пускаются с большой задержкой
    скорее всего изза того, что во время нажатия "OK" выполняется слишком много действий...
    что мне следует сделать, чтоб ускорить выполнение скрипта?...

    Всего записей: 39 | Зарегистр. 27-10-2008 | Отправлено: 21:59 25-11-2008 | Исправлено: CrazyNNM, 22:13 25-11-2008
    U235

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

    Цитата:
    вот есть программка
    http://files.kmvcity.ru/9262705

    ИМХО, использование массивов Array и циклов For позволит уменьшить код в 3-4 раза.

    Всего записей: 759 | Зарегистр. 14-12-2005 | Отправлено: 07:42 26-11-2008
    CrazyNNM



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

    Всего записей: 39 | Зарегистр. 27-10-2008 | Отправлено: 08:56 26-11-2008
    U235

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

    Код:
    Dim $n[21]
    Dim $p[21]
    For $i=1 To 20
    $n[$i]=IniRead($inf,"prog"&$i,"name","")
    $p[$i]=IniRead($inf,"prog"&$i,"path","")
    Next

     эквивалентна ~40 строчкам Вашего кода

    Всего записей: 759 | Зарегистр. 14-12-2005 | Отправлено: 12:07 26-11-2008
    CrazyNNM



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    U235
    спасибо, давно пытаюсь подступиться к использованию масивов, и все никак
    теперь все более-менее понятно
     
    прога стала и правда быстрее пахать.

    Всего записей: 39 | Зарегистр. 27-10-2008 | Отправлено: 13:03 26-11-2008
    frb noname

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть список list, в котором отображаются полученные файлы, есть список list_baza, в котором отображаются обработанные файлы, информация по которым занесена в базу Sqlite.
     
    Возможно ли сделать так, чтобы необработанные файлы (которых нет в list_baza) отображались другим (например красным) цветом ?
     
    Т.е. задача сводиться к следующему : сравнить два списка, и в большем списке выделить другим  цветом строки, которых еще нет в меньшем списке.  
     
    Или не морочиться, и просто делать третий список с не отработанными файлами ?

    Всего записей: 47 | Зарегистр. 03-11-2008 | Отправлено: 14:36 27-11-2008
    Tipulatoid



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

    Код:
    #Include <WindowsConstants.au3>  
    #include <GuiConstantsEx.au3>  
    #include <GuiRichEdit.au3>  
    #Include <File.au3>
    #Include <Array.au3>
     
    $MainColor = 0x00FF00 ; зеленый  
    $FailureColor = 0x0000FF ; красный  
    $BackgroundColor = 0x000000 ; черный
     
    $GUI = GUICreate("Лог",700,500)  
    $hRichText = RichText_Create($GUI, 0, 0, 700, 500)  
    RichText_BkColor ($hRichText, $BackgroundColor)  
    GUISetState()
    _CompareProcess()
     
     
    While 1
       If GUIGetMsg() = $GUI_EVENT_CLOSE Then Exit
    WEnd
     
    Func _CompareProcess ()
       Local $aList[1]
       Local $aList_baza[1]
       Local $list = "list"
       Local $list_baza = "list_baza"
       _FileReadToArray ($list, $aList)
       _FileReadToArray ($list_baza, $aList_baza)
     
        For $x = 1 to UBound ($aList) - 1
            If _ArraySearch ($aList_baza, $aList[$x]) <> -1 Then  
                RichText_SetColor($hRichText, $MainColor)
            Else
                RichText_SetColor($hRichText, $FailureColor)
            EndIf
            RichText_AppendText($hRichText, $x & " " & $aList[$x] & @CRLF)
        Next
    EndFunc

     
    Используется GuiRichEdit.au3 UDF Ее нужно скачать и поместить в папку C:\program files\autoit3\include

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 16:26 27-11-2008 | Исправлено: Tipulatoid, 16:37 27-11-2008
    ikif



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

    Всего записей: 156 | Зарегистр. 09-12-2006 | Отправлено: 03:17 28-11-2008
    Maza_Faka



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

    Цитата:
    способ нажатия мышкой в неактивном окне

    Вряд-ли.
     

    Цитата:
    не имеет Class, и надо сделать это по координатам

    Это можно, но в активном окне.

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:06 28-11-2008
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    не совсем понятен скрипт Отключения/Подключения к Интернету из шапки.
    НЕ знаю как его прикрутить к моей ситуации.
    Интернет ADSL подключаюсь по  pppoe с компа. очень часто отваливается.
    Как проверять состояние подключения?
    Попробую замутить через rasdial.
    Нужен полный автоматизм, чтоб не бегать включать каждый раз.

    Всего записей: 1620 | Зарегистр. 01-05-2006 | Отправлено: 09:18 28-11-2008
    NORIO



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

    Всего записей: 875 | Зарегистр. 18-12-2004 | Отправлено: 11:30 28-11-2008 | Исправлено: NORIO, 11:35 28-11-2008
       

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

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 1)
    Widok (12-01-2009 14:47): лимит страниц. продолжаем здесь


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru

    Рейтинг.ru