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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 | Цитировать | Сообщить модератору
    ynbIpb
    ооо, не, вопрос же в получение адреса флешки ...тут где то уже обсуждали, надо найти функцию, которая выдает данные о родительском процессе ...  
     
     
    11943499
    вариант...

    ----------
    Мысли-читатель сломался…..может подробней расскажите?
    Где исходный код? Или мы стихи обсуждаем?! ))) Тег [more] спасет этот мир !!

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 17:47 27-06-2009 | Исправлено: sproxy, 18:10 27-06-2009
    11943499

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    В этом то и проблема, как передать из консоли запуска имя диска, с которого прога запускается. Или как его принять уже в ai.
     
    Как другой вариант решения проблемы,
    возможно ли интегрировать в компилированный файл ai другие EXE приложения, чтобы можно было их запускать изнутри AI ?
     

    Всего записей: 132 | Зарегистр. 06-10-2008 | Отправлено: 17:56 27-06-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    sproxy 17:47 27-06-2009
    Цитата:
    надо найти функцию, которая выдает данные о родительском процессе ...

    Подробнее...
     
    Ну а потом функцией из шапки получить полный путь к исполняемому файлу по процессу, а там уже и букву диска (флэшки).

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 18:04 27-06-2009 | Исправлено: ViSiToR, 18:08 27-06-2009
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sproxy, а разве в случае запуска из батника родительским процессом не будет cmd.exe ? Который явно не на флешке лежит.
    11943499, неужеле в батниках нет никаких функция типа переменных чтоб их перезать как параметр запуска файла автоита?

    Цитата:
    возможно ли интегрировать в компилированный файл ai другие EXE приложения

     Автоит может в себя всосать любой файл и когда нужно выплюнуть его и запустить.
    FileInstall ( "source", "dest" [,flag] )
    Ещё как вариант, перебрать все диски и проверить на соответствие флешка это или нет, но это будет работать если в системе толька одна флешка.
    -------------
    ViSiToR, спрячь под тег MORE плиз, а то коверкается страничка....

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 18:05 27-06-2009 | Исправлено: ynbIpb, 18:10 27-06-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ynbIpb 18:05 27-06-2009
    Цитата:
    неужеле в батниках нет никаких функция типа переменных чтоб их перезать как параметр запуска файла автоита?

    Есть конечно: %~d0 - раскроется в имя диска откуда запущен батник.

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

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



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ynbIpb 18:05 27-06-2009
    Цитата:
    ViSiToR, спрячь под тег MORE плиз, а то коверкается страничка....

    ооого, ViSiToR! Ты! И забыл про more .....  



    ----------
    Мысли-читатель сломался…..может подробней расскажите?
    Где исходный код? Или мы стихи обсуждаем?! ))) Тег [more] спасет этот мир !!

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 18:12 27-06-2009
    11943499

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    MsgBox(64, "_ProcessGetParent", _  
            StringFormat("Parent Process ID (PID): %i\nParent Process Name: %s", $iParent_ProcID, $sParent_ProcName))
     
    Вот это окно показывает мне pid процесса и имя проги, БЕЗ пути. Немного не то, но уже ближе )

    Всего записей: 132 | Зарегистр. 06-10-2008 | Отправлено: 18:12 27-06-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ynbIpb
    11943499
    Ну еще вариант: На флешке запускать AutoIt файл, который и будет выполнять все нужные действия бат ...
     
    ViSiToR
    Полезная ж функция, получения PID родительского процесса, её бы в шапку...
     
    11943499
    смотри пример, там с комментами
     
     
     
    AZJIO
    тестируй

    ----------
    Мысли-читатель сломался…..может подробней расскажите?
    Где исходный код? Или мы стихи обсуждаем?! ))) Тег [more] спасет этот мир !!

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 18:13 27-06-2009 | Исправлено: sproxy, 06:53 28-06-2009
    11943499

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Спасибо, ребята, за помощь. )
    Решил задачу по другому, но даже более эффективно. Использовал вызов сторонней проги из самого AI. Теперь другой вопрос, может кто знает ?
    В заголовке форума есть пример скриптов для копирования файлов с прогресс баром.
    Штука классная, работает, но окно с индикатором тупо стоит в центре экрана и не двигается мышкой, и процесс копирования невозможно прервать. Ниже привожу копию кода,  
    что тут вставить и куда, чтобы можно было бы загнать окошко в угол экрана (или хотя бы перемещать), а также добавить возможность прерывания процесса копирования ?
     
    ************************************************************
    Копирование большого файл с отображением данных прогресса:  
    (Требуется библиотека DllCallBack.au3).  
    Код:  
    #include <DllCallBack.au3>  
     
    _FileCopyEx("C:\BigFile.avi", @ScriptDir & "\BigFile.avi")  
     
    Func _FileCopyEx($Source, $Dest)  
        If Not FileExists($Source) Then Return SetError(1)  
        ProgressOn("_FileCopyEx() Demo", "Копирование, ждите плиз...")  
        $pCopyProgressRoutine = _DllCallBack("_CopyProgressRoutine", "uint64;uint64;uint64;uint64;dword;dword;ptr;ptr;ptr")  
        DllCall("kernel32.dll", "int", "CopyFileExA", _  
            "str", $Source, _  
            "str", $Dest, _  
            "ptr", $pCopyProgressRoutine, _  
            "ptr", 0, _  
            "int", 0, _  
            "int", 0)  
        _DllCallBack_Free($pCopyProgressRoutine)  
        Sleep(1000)  
        ProgressOff()  
    EndFunc  
     
    Func _CopyProgressRoutine($TotalFileSize, $TotalBytesTransferred, $StreamSize, $StreamBytesTransferred, $dwStreamNumber, $dwCallbackReason, $hSourceFile, $hDestinationFile, $lpData)  
        $Precent = $TotalBytesTransferred/$TotalFileSize*100  
        ProgressSet($Precent, "Проценты: " & Round($Precent, 1) & " %")  
        Return 0  
    EndFunc   ;==>_CopyProgressRoutine  
    **************************************************************  

    Всего записей: 132 | Зарегистр. 06-10-2008 | Отправлено: 22:57 27-06-2009 | Исправлено: 11943499, 23:01 27-06-2009
    11943499

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Уже разобрался с основными вопросами.
    Как сделать так, чтобы при запуске проги AI можно было бы учитывать нажатые определенные клавиши. Например запускаю прогу, если в момент ее запуска нажата скажем SHIFT, я получаю этот признак внутри проги и дальше уже учитываю. Ну что-то типа  
     
    if "shift pressed"  then
    bla-bla
    else  
    exit
    endif

    Всего записей: 132 | Зарегистр. 06-10-2008 | Отправлено: 16:13 28-06-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    11943499
    За это отвечает функция HotKeySet, в справке есть пример.
    Ну, а если проконтроллировать состояние клавиши, то: _IsPressed, опять же в справке (..\AutoIt3\UDFs3.chm") есть пример.

    ----------
    Мысли-читатель сломался…..может подробней расскажите?
    Где исходный код? Или мы стихи обсуждаем?! ))) Тег [more] спасет этот мир !!

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 03:32 29-06-2009
    AZJIO



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

    Код:
    $EmptyDir='0'
    If StringInStr(FileGetAttrib(@ScriptDir&'\zzz'), "D") Then $EmptyDir='1'
    Local $FindFirstFile = FileFindFirstFile(@ScriptDir&'\zzz\*.*')
    If @error = 1 Then $EmptyDir='1'
    If $EmptyDir='1' Then
    GUICtrlSetData($Label95, 'папка пуста')
    Else
     GUICtrlSetData($Label95, 'папка не пуста')
    EndIf

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 23:36 29-06-2009 | Исправлено: AZJIO, 23:56 29-06-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 23:36 29-06-2009
    Цитата:
    как просто выдать сообщение, что каталог пуст?


    Код:
     
    ;Переменной $IsEmpty присваивается значение возвращаемое ф-ей _DirIsEmpty()
    $IsEmpty = _DirIsEmpty("c:\Temp")
     
    ;Отображение содержимого переменной $IsEmpty и уровень ошибочности
    MsgBox(64, "Results", "$IsEmpty = " & $IsEmpty & @LF & "@error = " & @error)
     
    ;Функция проверяет если каталог по заданному пути не содержит файлы/папки.
    ;Если папка не существует (по пути из переменной $sPath), то @error = 1 и возвращается 0
    ;Если папка существует, и она *не* пуста, то возвращается 0
    ;Если папка существует, и она *пуста*, то возвращается 1

    Func _DirIsEmpty($sPath)
     
        ;Если атрибут папки не содержит D (от слова Dir), то устанавливаем уровень ошибочности и возвращаем 0
        If Not StringInStr(FileGetAttrib($sPath), "D") Then Return SetError(1, 0, 0)
     
        ;Инициализация поиска *любого* файла в указанном пути
        Local $hSearch = FileFindFirstFile($sPath & "\*")
     
        ;"Запоминаем" уровень ошибочности
        Local $iRet = @error
     
        ;Закрытие хендла (управляющего) после инициализации поиска (обязательно)
        FileClose($hSearch)
     
        ;Возвращаем уровень ошибочности ($iRet),
        ;FileFindFirstFile() возвращает @error = 1 если папка пуста, это и есть индикация того, что она пуста

        Return $iRet
    EndFunc


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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Помогло, вот.

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 07:56 30-06-2009
    Volgar



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

    Всего записей: 592 | Зарегистр. 16-03-2003 | Отправлено: 18:15 30-06-2009
    Belfigor au3



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Заносить данные из вне в AutoIt ты можешь прослушивая определенный сокет на который будет приходить инфа. Через клипбоард. Через какое нить файло (например ini). Считывая данные напрямую из браузера. Через cmd. Кароче способов сбора данных из вне достаточно много. А про передачу данных наружу, думаю все зависит от возможностей приема того места куда ты их будешь пытаться отправить.

    Всего записей: 20 | Зарегистр. 14-02-2009 | Отправлено: 18:49 30-06-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Volgar, думаю из вариантов, которые предложил Belfigor au3, найдется, что тебе ближе и удобней.
     
    Пример передачи скрипту параметров.
    Между скрипта, можно передовать информацию: записывая данные в Gui  Control из одного скрипта в другой, так же пример в шапке, или использовать "внешнее хранилище - как бы внешний массив".
     
    Из AutoIt можно передать данные JavaScript-у - точно таким же образом, как это делает PHP.
    Т.е. польностью считаьт HTML код страницы и вписать нужное значение в нужном скрипте JS.
     
     
     
    Добавлено:
    AZJIO
    Пример: Disable / Enable кнопки, если в Input, в самом начале введен текст /buy. Проверка по событию

    ----------
    Мысли-читатель сломался…..может подробней расскажите?
    Где исходный код? Или мы стихи обсуждаем?! ))) Тег [more] спасет этот мир !!

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 19:37 30-06-2009 | Исправлено: sproxy, 22:05 30-06-2009
    rizoVRN



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Господа, помогите с написанием скрипта...
    нужно, что бы при копировании файлов на диск А: там же саздавалась папка "Копия" с копией копируемых файлов

    Всего записей: 12 | Зарегистр. 24-03-2009 | Отправлено: 10:54 01-07-2009
    Lovec



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    rizoVRN
    А в чем трабл то? Откуда / куда копировать ты знаешь. Дальше команды DirCreate и FileCopy. Вроде все
     
    Добавлено:
    Я на компе локальный админ. Комп в домене. Как мне запустить скрипт с правами администратора домена (пароль и логин известны)? Проблема в том что я не хочу запускать откомпилированный exe, а скрипт прямо из SciTE по <F5>. Нельзя ли прямо в теле скрипта прописать права запуска?

    Всего записей: 1028 | Зарегистр. 29-10-2002 | Отправлено: 14:24 01-07-2009 | Исправлено: Lovec, 14:39 01-07-2009
    11943499

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как задать в TraySetIcon вид значка, исходящего из моего файла (ico), чтобы при исполнении скрипта этот значок был всегда, даже если файлика (ico) нет.
     
    Ну то есть,
    TraySetIcon ( [с:\myICO.ico [, iconID] )
    значит при выполнении скрипта нужно чтобы myICO.ico всегда лежал на c: ,
    а как его внедрить, чтобы он компильнулся раз и навсегда ?
    FileInstall не предлагать, это слишком громоздкое решение...)
     

    Всего записей: 132 | Зарегистр. 06-10-2008 | Отправлено: 20:33 01-07-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.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru