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

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

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

gyra (23-01-2020 10:51): AutoIT (Часть 4)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

   

Widok



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

 
Описание:

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

 
  • Справки
  • Инструменты
  • Ресурсы, посвящённые AutoIt
  • Полезные советы новичкам и не только
  • Готовые решения
  • Скрипт раскраски кода AutoIt для публикации в форумах
     


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

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 13:07 01-06-2010 | Исправлено: Maz, 12:29 10-01-2020
    ALEXSOVA83

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Orion_76
     
    Не получается даже при нормальном фокусе послать текст в поле, может я что не так делаю?
    Вот код:
    #Include <WinAPI.au3>  
    Run("C:\Documents and Settings\alex\Application Data\Guru-Soft\GS-Vedomosti\sadmin.exe")
    $hWnd=WinGetHandle("Загрузка модуля администрирования",'Список баз данных (кликните два раза, чтобы выбрать базу для загрузки)')
    ControlSend($hWnd,'Список баз данных (кликните два раза, чтобы выбрать базу для загрузки)', "[CLASS:TLabeledEdit; Instance:    1]","********")

    Всего записей: 3 | Зарегистр. 16-08-2010 | Отправлено: 12:02 16-08-2010
    cin



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет всем.
    Есть скрипт на cmd примерно такого рода
    @echo off
    for /f "tokens=1-7 delims=; skip=1 usebackq" %%a in ("file") do (
    if %%a equ %computer_name% set place=%%c
    )
    if "%place%"==" " set place=Ru\New
    1>>config echo.Group=%place%
     
    Как можно использовать cmd в auto it?
    auto it нужен мне для того, чтобы не посылать пользователю файл который содержит пароли и служебную инфу.

    Всего записей: 53 | Зарегистр. 26-12-2006 | Отправлено: 19:37 16-08-2010 | Исправлено: cin, 08:48 17-08-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Утилита RegExp для теста регулярных выражений. Так как AutoIt3 своими средствами выполняет поиск по шаблону в виде регулярного выражения, то остаётся только сделать удобную оболочку. Работает нормально, но есть проблема - если в инпуте замены ввести \r\n, то воспринимается он как текст а не как перенос строк, а также не воспринимаются в виде @CRLF и chr(13) и chr(10), в то время как в функции скрипта - StringRegExpReplace они нормально воспринимаются. Ограничение добавления патернов в библиотеку 99. Для большего количества делаем очередной файл-библиотеку.

    Всего записей: 4560 | Зарегистр. 03-05-2006 | Отправлено: 08:50 18-08-2010 | Исправлено: AZJIO, 21:29 13-04-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO,
    У Вас в утилите RegExp, похоже, неправильный паттерн для IP-адресов ('\d{2,3}\.\d{2,3}\.\d{1,3}\.\d{1,3}'). Вот здесь посмотрите: Правильный формат IP адреса?.

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    В гугле много разных форматов записи, в том числе и похожие на мой вариант. У меня заменить d{2,3} на d{1,3}, тогда охватывает айпишники с одной цифрой. Верхнее ограничение не ставил, так как вероятность мала, но можно задать точный диапазон. По ссылке не регексп, а только формат айпишнеков.
    Кстати, альтернативная ссылка теста регекспов.
     
    Вот пример Library_Path.ini для открытия в RegExp
    Ещё ссылка на статью о регулярных выражениях.

    Всего записей: 4560 | Зарегистр. 03-05-2006 | Отправлено: 19:57 18-08-2010 | Исправлено: AZJIO, 03:24 21-08-2010
    dc32

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, кому не сложно, плиз помогите с написанием GUI.
    Описание:
    например есть директория Project, структура такая
     
    /project/gui.exe
     
    /project/base/
     
    /project/base/button1
    /project/base/button1/tab1
    /project/base/button1/tab2
    /project/base/button1/tab3
     
    /project/base/button2
    /project/base/button2/tab1
    /project/base/button2/tab2
    /project/base/button2/tab3
     
    /project/base/button3
    /project/base/button3/tab1
    /project/base/button3/tab2
    /project/base/button3/tab3
     
    При запуске GUI.exe нужно чтобы "меню" само сгенерировалась в зависимости от структуры директорий папки base.
     
    в данном случае (с указанной директорией должно получиться):  
    окно с кнопками "button1" "button2" "button3"  
    при нажатии например на кнопку 1 должно появляться 3 таба (это будут просто файлы текстовые без расширения) и под табом1 текст (которые содержится в файле tab1)
     
    фишка в том что если я создам файл newtab4 (с текстом внутри "новый таб") в папке button1, то при запуске проге, она так же 3 буттона отобразит но уже 4 таба, имя четвёртого newtab4 а содержание текста под ним - "новый таб"  
     
    плиз оч нада написать это все в сценарии gui ) и замутить ЕХЕ

    Всего записей: 1 | Зарегистр. 20-08-2010 | Отправлено: 21:55 20-08-2010 | Исправлено: dc32, 22:10 20-08-2010
    gregaz



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

    Цитата:
    Утилита RegExp для теста регулярных выражений.

    В строке :  
     

    Код:
       'link http://forum.ru-board.com/topic.cgi?forum=5&topic=33902&glp#lt' [?] & @CRLF & _

     
    имеется опечатка, в связи с чем скрипт не запускается при отсутствии файла-ИНИ
     ('[?] -вне кавычек')

    Всего записей: 79 | Зарегистр. 02-06-2007 | Отправлено: 16:50 21-08-2010 | Исправлено: gregaz, 16:52 21-08-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gregaz
    Исправил.
    Выложил RegExp на офсайт. Проблема с символом s в квадратных скобках (мелкий шрифт), он в регулярке, я нажал отправить не исправляя незакрытые теги... Вследствиее этого BB-код code не используется и URL вставил свои символы, т.е. [?]  
     
    Кстати посмотрите справку по регекспам, скомпановал с разных источником и упорядочил. Сохранить как HTM но не в UTF-8 кодировке как предлагает пастбин.

    Всего записей: 4560 | Зарегистр. 03-05-2006 | Отправлено: 19:22 21-08-2010 | Исправлено: AZJIO, 22:09 25-08-2010
    madmasles

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

    Цитата:
    посмотрите справку по регекспам
    Спасибо!  
    Ваша подробнее, чем в русской справке, а с англ. я не дружу.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 22:05 21-08-2010
    gregaz



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

    Цитата:
    Кстати посмотрите справку по регекспам,

    Посмотрел. Полезная вещь.
    На мой взгляд можно было уточнить формулировки и содержание параграфа :  Метасимволы внутри квадратных скобок
    В частности указать ,что в основном спецсимволы внутри класса не требуют экранизации , за исключением (перечислить)  
     
     
     
    Добавлено:
    madmasles

    Цитата:
    Ваша подробнее, чем в русской справке

    На мой взгляд этим разделом русской справки  вообще нельзя пользоваться ,он совсем не соответствует современным версиям Autoit

    Всего записей: 79 | Зарегистр. 02-06-2007 | Отправлено: 22:15 21-08-2010
    AZJIO



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

    Всего записей: 4560 | Зарегистр. 03-05-2006 | Отправлено: 04:44 22-08-2010 | Исправлено: AZJIO, 22:09 25-08-2010
    oXiOneX



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребят, помогите! Я являюсь администратором одного хаба, поэтому скомпилировал сборку оптимизированного под этот хаб DC++ клиента Apex SM s16.4. Вставил туда настройщик, чтобы он спрашивал, какой ник нужен и ип, но он понимает только английские ники. Заметил в одной сборке, что этот настройщик создан с помошью AutoIT 3. Может мне кто-нибудь поможет написать такой скрипт?
     
    Добавлено:
    Надо изменить файл Settins\Favorites.xml, а именно: " <Hub Name="Inferno City Novosibirsk Hub" Connect="1" Description="Город свободных действий" Nick="" Password="" Server="dchub://fierycity.ru" UserDescription="" AwayMsg="" Email="" WindowPosX="0" WindowPosY="0" WindowSizeX="0" WindowSizeY="0" WindowType="3" ChatUserSplit="7500" StealthMode="0" HideShare="0" ShowJoins="0" ExclChecks="0" UserListState="1" HeaderOrder="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" HeaderWidths="100,75,75,75,100,75,50,40,40,40,40,40,100,100,100" HeaderVisible="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" RawOne="" RawTwo="" RawThree="" RawFour="" RawFive="" Mode="2" IP="" OpChat="" CliendId="FakeDC V:1.0" OverrideId="0"/>  " -
    - нужно, чтобы она вписывала ник " Nick="Вот сюда" "(это находится в этой же строчке, после Description).  
    Ещё нужно, чтобы он прописывал путь к файлу руссификации (сам путь находится в файле  
    Settings\DCPlus.xml) В этом файле, точнее в 11 его строчке есть секция  
    <LanguageFile type=""</LanguageFile> так вот, мне нужно, чтобы он прописывал реальный путь к руссификатору. Например, если я установил клиент в C:\Temp\ ,то конфигуратор прописывает путь к руссификатору вот так:
    C:\Temp\Settings\Russian.xml  
    Вот тот файл, про который я говорил - http://narod.ru/disk/23974804000/apex_config_sweet.211.ru.exe.html  
    Вот моя сборка ApexDC++ SM s16.4 (не скомпелированная, но с готовым скриптом для Inno Setup 5) - http://narod.ru/disk/23975057000/%D0%9A%D0%BB%D0%B8%D0%B5%D0%BD%D1%82.rar.html
    Вот моя сборка ApexDC++SM s16.4 (скомпилированная с помощью Inno Setup 5) - http://narod.ru/disk/23975499000/Inferno_city%20DC-P2P%20Pack2.exe.html

    Всего записей: 24 | Зарегистр. 22-08-2010 | Отправлено: 19:08 22-08-2010
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    oXiOneX, Что-то не нахожу там проверку на русские символы. только вот это есть: код
    Этот гадкий скрипт вешает мне процессор. Вобщем на изучай: файлик
    А вообще декомпиляция типа нарушает авторские права, так что используй только в ознакомительных целях. Лучше найди автора и попроси его о модификации.

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 08:58 23-08-2010 | Исправлено: ynbIpb, 09:04 23-08-2010
    oXiOneX



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ynbIpb, не, ты меня не так понял. Я просто привел пример того, что я хочу сделать. Но так как я не умею работать в данной программе вообще, хотя читал множество туториалов, хотел бы попросить кого-нибудь из вас создать нечто подобное этому скрипту. Так вы поможете? P.S.: а за скрипт спасибо!
     
    Добавлено:
    ynbIpb, к тому же, автор запросил слишком несусветную цену - 500 р. За 750 можно лицензию Антивируса Касперского купить =))) Слушай, а как ты так файл разобрал то? Есть какой декомпилятор что-ли? И ещё, если не сложно, можешь вот этот файлик декомпилировать -  http://narod.ru/disk/23975057000/%D0%9A%D0%BB%D0%B8%D0%B5%D0%BD%D1%82.rar.html ? Он находится внутри этого архива, в папке Settings. Как раз в нем есть ограничение на латиницу. Это настройщик двухфайловый - editor.exe и файл с конфигурацией editor.xml
     

    Всего записей: 24 | Зарегистр. 22-08-2010 | Отправлено: 12:05 23-08-2010
    ADamb

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Насчет поддержка мультиязычности
    Сделал функцию для чтения из lng в UTF-8 или UNICODE формате, дает большую свободу для добавления языков.
    Меняем

    Код:
     
    ;читаем все параметры в секции lng
    $aLng = IniReadSection(@ScriptDir&'\'&$Path, 'lng')  
     

    на

    Код:
     
    ;читаем все параметры в секции lng
    $aLng = IniReadSectionUTF8(@ScriptDir&'\'&$Path, 'lng')  
     

    и добавляем

    Код:
     
    Func IniReadSectionUTF8($path,$section)
        ;Input file is UTF-8 with signature, UNICODE or ANSI
        Local $RezArray[20][2] ;20 elements for now
        $inifile=StringRegExpReplace(FileRead($path),@CRLF,@CR)
        $inifile=StringRegExpReplace($inifile,"(\r){2,}","\1")
        $MatchArray=StringRegExp($inifile, "(?s)\["&$section&"\]\r([^\[]*)", 1)
        $MatchArray=StringSplit($MatchArray[0],@CR)
        $Arrayelem=0
        For $Arraycntr=1 to $MatchArray[0]
            If StringInStr($MatchArray[$Arraycntr],"=")>1  and StringMid($MatchArray[$Arraycntr],1,1)<>";" Then ;not comment or line without =, continue
                $Arrayelem=$Arrayelem+1
                $Component=StringSplit($MatchArray[$Arraycntr],"=")
                $RezArray[$Arraycntr][0]=$Component[1]
                $RezArray[$Arraycntr][1]=$Component[2] ; Could there be string with "=" ??
            EndIf
        Next
        $RezArray[0][0]=$Arrayelem
        ReDim $RezArray[$Arrayelem+1][2]
        Return $RezArray
    EndFunc
     

    Всего записей: 55 | Зарегистр. 11-12-2002 | Отправлено: 23:18 24-08-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сделал выписку по "Сообщениям Windows". Нашёл интересную информацию - сообщение EM_GETSEL позволяет получить выделенный текст в поле Edit. На AutoIt3 это можно как то осуществить? Поиск в Include выдал результат наличия EM_GETSEL, но функция _GUICtrlEdit_GetText возвращает весь текст, а не выделенный.
     
    Хотя уже нашёл _GUICtrlEdit_GetSel возвращает позицию начала и конца.  
    Теперь осталось понять как получить активный элемент окна, с которого получить выделенный текст.

    Всего записей: 4560 | Зарегистр. 03-05-2006 | Отправлено: 05:09 25-08-2010 | Исправлено: AZJIO, 05:50 25-08-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 05:09 25-08-2010
    Цитата:
    сообщение EM_GETSEL позволяет получить выделенный текст в поле Edit

    Оно возвращает позицию выделения.
     

    Цитата:
    _GUICtrlEdit_GetSel возвращает позицию начала и конца

    Там используется как раз EM_GETSEL, для получения текста используется EM_GETSELTEXT, хотя у меня она почему то не работает. Но можно использовать ControlCommand:
     

    Код:
    ControlCommand($hGUI, "", "Edit1", "GetSelected")

     
     
     
    Добавлено:
    AZJIO 05:09 25-08-2010
    Цитата:
    Теперь осталось понять как получить активный элемент окна, с которого получить выделенный текст.

    ControlGetFocus?

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 05:49 25-08-2010
    AZJIO



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

    Код:
    #include <GuiEdit.au3>
    #include <GuiConstantsEx.au3>
     
    $Gui = GUICreate("My Program", 250, 260)
    $Edit=GUICtrlCreateEdit('текст для проверки выделения', 10, 50, 216, 174)
    $element2=GUICtrlCreateButton('получить', 10, 21, 120, 22)
    GUISetState ()
    While 1
       $msg = GUIGetMsg()
       Select
           Case $msg = $element2
                $arr1=_GUICtrlEdit_GetSel ($Edit)
    MsgBox(0, 'Сообщение', StringMid(_GUICtrlEdit_GetText ($Edit), $arr1[0], $arr1[1]-$arr1[0]))
           Case $msg = -3
               Exit
       EndSelect
    WEnd

     
    Теперь нужно ID активного окна получить.
     
    Добавлено:

    Цитата:
    ControlGetFocus?

    вроде то что надо

    Всего записей: 4560 | Зарегистр. 03-05-2006 | Отправлено: 05:53 25-08-2010 | Исправлено: AZJIO, 05:55 25-08-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 05:09 25-08-2010
    Цитата:
    Сделал выписку по "Сообщениям Windows"

    Полезное собрание. Но там некоторые пункты дизинформируют. Откуда описания брал?
     
    Добавлено:
    AZJIO 05:53 25-08-2010
    Цитата:
    С этим я разобрался

    Зачем так сложно:
     

    Код:
    #include <GuiEdit.au3>
    #include <GuiConstantsEx.au3>
     
    $Gui = GUICreate("My Program", 250, 260)
    $Edit = GUICtrlCreateEdit('текст для проверки выделения', 10, 50, 216, 174)
    $element2 = GUICtrlCreateButton('получить', 10, 21, 120, 22)
    GUISetState()
     
    While 1
        $msg = GUIGetMsg()
        Select
            Case $msg = $element2
                MsgBox(0, 'Сообщение', ControlCommand($Gui, "", $Edit, "GetSelected"))
            Case $msg = -3
                Exit
        EndSelect
    WEnd


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

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



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

    Код:
    $Selected_Text = ControlCommand(WinGetHandle(''), "", ControlGetFocus(WinGetHandle('')), "GetSelected")

    возвращает квадраты вместо букв, хотя по количеству совпадает. А вставляет вопросы.
    Свой вариант тоже проверил, но он  выдаёт массив по нулям, как бы ничего не выделив.

    Код:
    $arr1=_GUICtrlEdit_GetSel (ControlGetFocus(WinGetHandle('')))
    $Selected_Text = StringMid(_GUICtrlEdit_GetText (ControlGetFocus(WinGetHandle(''))), $arr1[0], $arr1[1]-$arr1[0])

     
    Добавлено:
    проверил

    Код:
    MsgBox(0, 'хэндл', WinGetHandle(''))
    MsgBox(0, 'ID', ControlGetFocus(WinGetHandle('')))

    ID=Scintilla1, а Au3Info.exe возвращает "Instance: 5". Хотя в первом случае ведь работает. Au3Info.exe выдаёт в качестве видимого текста окна набор квадратов вместо символов. В макстоне в поле отправки сообщения вообще текста не видит.

    Всего записей: 4560 | Зарегистр. 03-05-2006 | Отправлено: 06:03 25-08-2010 | Исправлено: AZJIO, 06:57 25-08-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 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)
    gyra (23-01-2020 10:51): AutoIT (Часть 4)


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru