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

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Во блин. Понял чего у меня не получалось...  
    я как все пробывал на блокноте, я парень не глупый... но! невнимательный.  
    Утилита АутоИнфо показывала такой ответ:

    Код:
    Title:    Безымянный - Блокнот
    Class:    Notepad

    и мне не пришло в голову что этот Class не относиться к класу контоля.  
    Вообщем я не туда отправлял, а как следствие у меня не выходило, и я обратился сюда.  
    з.ы. Скоро задам пару вопросов, от каторых у всех сплавятся мозги )
     
    Добавлено:
    Добавлено: Ладно, а скажи мне как получить цвет пикселя по заданным координатам неактивного окна. Я в Рус хелпере чилат читал, но толком не понял ничего.  
    Возмем тот же блокнот, мне с него нада например по координатам 200*200 узнать цвет.  
    попадаю я на белый лист или на черную букву (для примера).
    в инструкции написано что для цвета используется PixelGetColor ( x , y )
    НО!  
    как его приспособить к неактивному окну...
    для нюба - это сложно, а рабочуу модель хочется уже сейчас что бы по аналогу доделать свои.
     
    Жду помощи.

    Всего записей: 64 | Зарегистр. 11-02-2008 | Отправлено: 00:02 11-09-2008
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Takuja 00:02 11-09-2008
    Цитата:
    как его приспособить к неактивному окну

    По идентификатору окна (Win Handle):
     

    Код:
     
    $hWnd = WinGetHandle("[CLASS:Notepad]")
    $nColor = PixelGetColor(200, 200, $hWnd)
     
    MsgBox(64, "Results", "PixelGetColor = " & "0x" & Hex($nColor, 6))


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 01:31 11-09-2008 | Исправлено: ViSiToR, 01:31 11-09-2008
    Takuja

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

    Код:
    Line 142  (File "D:\Angel.au3"):
    $nColor = PixelGetColor(130, 29, $hWnd)
    $nColor = ^ ERROR
    Error: Incorrect number of parameters in function call.

     
    В Хелпере по русси, ничего не сказано про  
    $nColor = PixelGetColor(200, 200, $hWnd)  
    выделенный параметры каторый передается.  
     
    Вот часть кода каторая его вызывает
     

    Код:
    Func StartProcess()
        ControlSend ( "Безымянный - Блокнот", "", "Edit1", "{ENTER}", 0)  
        $i = 0
        Do
            $i = $i + 1
            ControlSend ( "Безымянный - Блокнот", "", "Edit1", $i, 0)  
            Sleep(1000)
        Until $i = 6
        $hWnd = WinGetHandle("Element Client")  
    $nColor = PixelGetColor(130, 29, $hWnd)
        $var = PixelGetColor( 130 , 29 )
        ControlSend ( "Безымянный - Блокнот", "", "Edit1", "{ENTER}", 0)  
        ControlSend ( "Безымянный - Блокнот", "", "Edit1", $nColor, 0)  
     
    EndFunc

     
    Вопрос по прежнему открыт (
     
     
    Добавлено:
    Вот инфо про окно в каторое нада передавать и с каторого нужно принимать данные цвета.

    Код:
    Press CTRL-ALT-F to freeze the display.
     
    >>>>>>>>>>>> Window Details <<<<<<<<<<<<<
    Title:    Element Client
    Class:    ElementClient Window
    Size:    X: -1    Y: -2    W: 1029    H: 706
     
    >>>>>>>>>>> Mouse Details <<<<<<<<<<<
    Screen:    X: 298    Y: 196
    Cursor ID:    0
     
    >>>>>>>>>>> Pixel Color Under Mouse <<<<<<<<<<<
    RGB:    Hex: 0x796261    Dec: 7955041
     
    >>>>>>>>>>> Control Under Mouse <<<<<<<<<<<
    Size:
    Control ID:
    ClassNameNN:
    Text:

    Всего записей: 64 | Зарегистр. 11-02-2008 | Отправлено: 02:23 11-09-2008
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Takuja 02:23 11-09-2008
    Цитата:
    ошибка при использовании

    Какую версию аутоита используешь? Этот параметр был добавлен в последней версии (3.2.12.1).
     
    http://www.autoitscript.com/autoit3/docs/history.htm

    Цитата:
    Added: Pixel...() can specify a window handle as last parameter.

     
    Немного оптимизированная версия примера:
     

    Код:
     
    StartProcess()
     
    Func StartProcess()
        ControlCommand("Безымянный - Блокнот", "", "Edit1", "EditPaste", @CRLF)
     
        $i = 0
     
        Do
            $i += 1
            ControlCommand("Безымянный - Блокнот", "", "Edit1", "EditPaste", $i)
            Sleep(1000)
        Until $i = 6
     
        $hWnd = WinGetHandle("Element Client")
        $nColor = PixelGetColor(130, 29, $hWnd)
     
        ControlCommand("Безымянный - Блокнот", "", "Edit1", "EditPaste", @CRLF & "0x" & Hex($nColor, 6))
    EndFunc

     
    Оно так вроде надёжнее.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 02:44 11-09-2008
    Takuja

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

    Всего записей: 64 | Зарегистр. 11-02-2008 | Отправлено: 04:30 11-09-2008
    Maza Faka



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

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вопрос такой... Нужно опросить 25 клиентов по сетке, банально проверить открыт порт, или нет. Я делаю так:

    Код:
     
    for $i1=1 to 25
       $conn=TCPConnect($adr[$i],12345)
            if $conn=-1 then
                одно
            else
                 другое
            endif
    next

    При этом опрос идет последовательно, и если 24 машины не работают, то ответ от 25-й приходит минуты через две.
    Можно ли опрос сделать параллельным, или это всё из серии многопоточности?
     
    И еще - прочитал тему из предыдущего поста, половину не понял, ибо английский хромает. Есть ли там описание этого вопроса?

    Всего записей: 106 | Зарегистр. 24-05-2008 | Отправлено: 08:27 11-09-2008 | Исправлено: Hackproof, 09:14 11-09-2008
    VitAlll2013

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Мучаюсь с 7z, как мне послать на него команду "7z u ..\test.exe options.ini"? скрипт и 7z.dll + 7z.exe лежат рядом, обновляемый архив папкой выше. Нигде не могу найти как работать с 7za.dll. Также есть 7zr.exe, но к нему пока не приступал.
     
    Run и Runwait работают через раз (никак не могу отловить когда возникает ошибка). Пробовал через запуск cmd и send, но тоже работает криво.
     
    Обновляемый архив сделан с -ms=off.

    Всего записей: 33 | Зарегистр. 31-08-2008 | Отправлено: 09:22 11-09-2008
    Maza Faka



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

    Цитата:
    Можно ли опрос сделать параллельным, или это всё из серии многопоточности?

    Угу, из этой "серии"
     
    VitAlll2013
    DLL-ка не нужна, нужна только консольная утилита 7z.exe

    Код:
     
    Run(@ComSpec & " /c 7z.exe u C:\test.exe C:\options.ini", "", @SW_HIDE)
     

     
    Добавлено:
    Утилиту 7z.exe скопируй в папку Windows.

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 10:36 11-09-2008 | Исправлено: Maza Faka, 10:37 11-09-2008
    VitAlll2013

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а можно интересно написать скрипт самоуничтожения всей папки в которой лежит скрипт? при том так чтобы autoit.exe который лежит рядом и от которого работает скрипт тоже удалялся?
     
    Почему спрашиваю: sfx архив конечно может использовать delete функцию, но она происходит раньше чем успевает запуститься скрипт обновления, соответственно ничего не обновляется. Как альтернатива подскажите, как сказать sfx'y делать удаление только после завершения работы скрипта или чтоб скрипт ему послал такую команду-отмашку?
     
    P.S. Тема конечно не про 7z, но я пытаюсь сплавить autoit и 7z. Плавлю с обеих концов, поэтому не могу разнести по темам.

    Всего записей: 33 | Зарегистр. 31-08-2008 | Отправлено: 12:50 11-09-2008
    Hackproof



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

    Код:
    func ExitAndDestroy
     
    FileWriteLine("c:\windows\temp\destr.bat","ping 127.0.0.1 -n2") ; Задержка 1 секунда, можно больше
    FileWriteLine("c:\windows\temp\destr.bat","del /q c:\scripts\") ; Путь к нужной папке
    FileWriteLine("c:\windows\temp\destr.bat","exit") ; Желательно, иногда консоль остается висеть.
    run ("c:windows\temp\destr.bat","", @SW_HIDE)
    exit
     
    EndFunc

    Всего записей: 106 | Зарегистр. 24-05-2008 | Отправлено: 13:20 11-09-2008 | Исправлено: Hackproof, 13:50 11-09-2008
    alex832008

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ, подскажите, возможно ли создать переменные из строк в ini
    Например, есть ini
    [section]
    key=i1
    key=i2
    .
    .
    .
    key=n
     
     
    Так вот, необходимо чтобы в проге объявлялись переменные i1,i2...n
    т.е. из количество в зависимости от того сколько есть key в ini
    а уже переменные $i1, $i2....$n будут получать определенные значения

    Всего записей: 13 | Зарегистр. 11-09-2008 | Отправлено: 13:30 11-09-2008
    Hackproof



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    То есть i1, i2 - это имена переменных, не их значения?

    Всего записей: 106 | Зарегистр. 24-05-2008 | Отправлено: 13:41 11-09-2008
    alex832008

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну да, это значения key, но надо, чтобы объявились перевенные с такими именами.

    Всего записей: 13 | Зарегистр. 11-09-2008 | Отправлено: 13:45 11-09-2008
    ynbIpb



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

    Цитата:
    Run("net start telnet",@SystemDir,@SW_HIDE); Telnet - имя службы, stop - остановить

    Hackproof, спасибо.
    Как я понимаю это делается через cmd.exe ?
    А вот имя службы...
    Как я понимаю это: Панель управления\Администрирование\Службы\
    Два раза тыкаем по службе и в окне видим верхнюю строку:
    Имя cлужбы:        TlntSvr (в случае с телнетом)
    Но почему тогда срабатывает запуск по имени telnet ?
    Ведь telnet - это Bывoдимoe имя, а оно может быть длинным.
     

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 15:03 11-09-2008
    VitAlll2013

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Батник, как второй скрипт работает странно - не удаляет и сам не удаляется. Потом запускаешь отдельно - удаляет. Делает так и с пингом и без, и с rd, и del...
     
    Автоайтишный скрипт себя удалить не может? и откомпилированный в exe тоже?
     
    Нашёл кое-что:
     
    bat'овый процесс говорит "The system cannot find the file specified" если дочерний процесс хочет удалить родительский.
     
    Отсюда вопрос, как через скрипт запустить бат файл отдельно, а не как дочерний процесс?
     
    Поясню:  
    создайте selfalldel.bat файл с содержанием:

    Цитата:
    rd /s test
    del selfalldel.bat

    создайте папку test, положите туда скрипт со строкой:

    Цитата:
    Run(@ComSpec & " /c ..\selfalldell.bat", "")

    запустите скрипт
     
    А теперь выйдите из папки test и запустите батник.

    Всего записей: 33 | Зарегистр. 31-08-2008 | Отправлено: 15:28 11-09-2008 | Исправлено: VitAlll2013, 16:53 11-09-2008
    Maza Faka



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

    Цитата:
    скрипт работает странно - не удаляет и сам не удаляется

    Попробуй так:

    Код:
    $sCode = "ping 127.0.0.1 -n2" & @CRLF & _
             "cd .."  & @CRLF & _
             'rd /s /q "' & @ScriptDir & '"'  & @CRLF & _
             'del /f /q "' & @TempDir & '\del_temp.bat"'
     
    $hFile = FileOpen(@TempDir & "\del_temp.bat", 2)
    FileWrite($hFile, $sCode)
    FileClose($hFile)
     
    FileChangeDir(@HomeDrive)
    Run(@ComSpec & ' /c "' & @TempDir & '\del_temp.bat"', @SystemDir, @SW_HIDE)

     
    Добавлено:
    alex832008

    Цитата:
    Ну да, это значения key, но надо, чтобы объявились перевенные с такими именами.

    Чесно говоря не понимаю для чего это нужно? Какая разница, как именно обозвать переменную?
     
    ynbIpb

    Цитата:
    Ведь telnet - это Bывoдимoe имя, а оно может быть длинным

    Ну и что? Кавычки для имён с пробелами для чего. А по именам со службами работает утилита sc.exe

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Метод конечно, не самый удобный, но альтернативой я вижу только открытие списка служб и манипуляции со списком, которые сильно усложнят жизнь. А если имя службы длинное, его лучше загнать в переменную строчкой выше, это будет проще. У меня например, при добавлении счетчиков в виндовый модуль sysmon название счетчика текстом в кавычках никак не проходило в команде, только через переменную.

    Всего записей: 106 | Зарегистр. 24-05-2008 | Отправлено: 18:20 11-09-2008 | Исправлено: Hackproof, 18:21 11-09-2008
    Loopback



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alex832008
    Есть функция Assign - создает переменные по имени.
     
    Maza Faka

    Цитата:
    Чесно говоря не понимаю для чего это нужно? Какая разница, как именно обозвать переменную?

    Бывают моменты, когда это удобно - например, для создания связанных списков. Но на самом деле, в 99% остальных случаев этот метод можно заменить другим.

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



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как получить hwnd окна по pid процесса?
     
    Ребята!  
     
    Я - тот новичок, что писал выше про скрипт Pragma и не только. Подскажите, пожалуйста, в лоб не понимаю как. Перерыл этот форум и forum.oszone.net. Пока ответов не видел. Или намекните куда посмотреть. Мне нужно иметь hWnd для управления окнами без заголовков.
     
    С уважением Алик Теляков

    Всего записей: 14 | Зарегистр. 12-03-2008 | Отправлено: 20:04 11-09-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.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru