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

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



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO
    Для SciTE нужен другой подход.
     
    В чём заключается цель всего этого? получить выделенный текст с любого места?

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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Да. Я же понимаю, что метод Send это был временный выход из ситуации, а идеальный это прочитать с активного элемента выделенный текст и заменить на исправленный. Хотя метод Send можно оставить, на случай если активный элемент не найден.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 19:58 25-08-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Обновил справку регулярные выражения, добавив \h, \H, \z, \V, исключил \p
    Но не разобрался в чём разница между \z и\Z, а также классы типа [:word:] у меня они не работают.
     
    ADamb

    Цитата:
    Сделал функцию для чтения из lng в UTF-8 или UNICODE формате, дает большую свободу для добавления языков.
    UTF-8 или UNICODE это для поддержки китайского языка?

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 22:02 25-08-2010 | Исправлено: AZJIO, 17:12 27-08-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 22:02 25-08-2010
    Цитата:
     в чём разница между \z и\Z

    \z это конец всей строки, \Z это конец всей строки или конец строки перед новой строкой. Хотя в реальности оно не работает.
     

    Цитата:
     классы типа [:word:] у меня они не работают

    Да, на этот счёт и у мменя всегда были возмущения.

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

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

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

    Цитата:
    UTF-8 или UNICODE это для поддержки китайского языка?

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

    Всего записей: 55 | Зарегистр. 11-12-2002 | Отправлено: 22:36 25-08-2010
    Bobr69



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет. Народ подскажите как сделать чтоб Send("{tab down}") длился 300 мс, потом Send("{tab up}") - 300 мс, а потом снова Send("{tab down}") и т.д., до тех пор пока скрипт вручную не остановится. И как сделать чтоб можно было регулировать частоту нажатия Tab во время выполнения скрипта.

    Всего записей: 28 | Зарегистр. 27-11-2007 | Отправлено: 01:16 29-08-2010 | Исправлено: Bobr69, 01:17 29-08-2010
    ynbIpb



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

    Код:
    While 1
        Send("{tab down}")
        sleep(300)
        Send("{tab up}")
        sleep(300)
    Wend

    а как регулировать лень думать.

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 01:27 29-08-2010
    AZJIO



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

    Код:
    HotKeySet("^{UP}", "_Plus")
    HotKeySet("^{DOWN}", "_Minus")
     
    Global $t=300, $tl=50
     
    While 1  
        Send("{tab down}")  
        sleep($t)  
        Send("{tab up}")  
        sleep($t)  
    Wend  
     
    Func _Plus()
        $t+=$tl
    EndFunc
     
    Func _Minus()
        $t-=$tl
    EndFunc

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 05:47 29-08-2010
    Kiev78

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть один интересный вопрос: допустим, у меня в блокноте открыт какой-нибудь файл. Есть ли возможность узнать полный путь к файлу (кроме как ковыряться в памяти процесса notepad.exe) - может есть какие-нибудь UDF-ы? Пока я могу взять только имя файла из заголовка окна.

    Всего записей: 244 | Зарегистр. 17-06-2006 | Отправлено: 11:53 29-08-2010 | Исправлено: Kiev78, 11:55 29-08-2010
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kiev78
    В блокноте можно, наверное, так попробовать:
    Код:
    If WinExists('[Class:Notepad]') Then
        $sFile = StringReplace(WinGetTitle('[Class:Notepad]'), ' - Блокнот', '')
    Else
        MsgBox(0, '', 'Нет блокнота')
        Exit
    EndIf
     
    $aReturn = _FileSearch(@HomeDrive, $sFile)
    If $aReturn[0] Then
        MsgBox(0, '', $aReturn[1])
    Else
        MsgBox(0, '', 'Файл ' & $sFile & ' не найден')
    EndIf
     
    Func _FileSearch($sPath, $sFileMask)
        Local $sOut = StringToBinary("0" & @CRLF, 2), $aOut
        Local $hDir = Run(@ComSpec & ' /U/C DIR "' & $sPath & '\' & $sFileMask & '" /S/B/A-D', @SystemDir, @SW_HIDE, 6)
        While 1
            $sOut &= StdoutRead($hDir, False, True)
            If @error Then ExitLoop
            Sleep(2)
        WEnd
        $aOut = StringRegExp(BinaryToString($sOut, 2), "[^\r\n]+", 3)
        If @error Then Return SetError(1)
        $aOut[0] = UBound($aOut) - 1
        Return $aOut
    EndFunc   ;==>_FileSearch
    А лучше пользоваться другим редактором, например, AkelPad, он сразу путь к файлу в заголовке окна пишет.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 15:43 29-08-2010
    Kiev78

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не, поиск не катит (во-первых долго, во-вторых может быть несколько файлов в разных местах с одинаковым именем).  
    Нужен именно блокнот.

    Всего записей: 244 | Зарегистр. 17-06-2006 | Отправлено: 19:18 29-08-2010
    Bobr69



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO спасибо
    А как сделать чтобы значения tab down и tab up были разными? Например чтоб tab был нажат 300мс, а не нажат 400мс

    Всего записей: 28 | Зарегистр. 27-11-2007 | Отправлено: 00:30 30-08-2010 | Исправлено: Bobr69, 01:01 30-08-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bobr69
    по простому - sleep($t+100), или $t-=$tl-50 если я понял правильно.
    А по сложному уж сам делай, пример польностью включает все этапы, остаётся только манипулировать переменными.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 06:36 30-08-2010
    Bobr69



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

    Код:
     
    HotKeySet("{UP}", "_Plus")
    HotKeySet("{DOWN}", "_Minus")
     
    Global $t=200, $tl=10
     
    While 1  
        Send("{tab down}")  
        sleep($t)  
        Send("{tab up}")  
        sleep(100)  
    Wend  
    Func _Plus()
        $t+=$tl
    EndFunc
    Func _Minus()
        $t-=$tl
    EndFunc
     


    Всего записей: 28 | Зарегистр. 27-11-2007 | Отправлено: 12:15 30-08-2010
    Kar1son

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bobr69
    у тебя
    Цитата:
    Func _Minus()  
        $t-=$tl  
    EndFunc

    сразу сбрасывает в 0, и уже больше $t не изменить

    Всего записей: 187 | Зарегистр. 23-08-2006 | Отправлено: 14:25 30-08-2010 | Исправлено: Kar1son, 14:25 30-08-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Обнаружил, что на Win7 (LiveCD) ярлыки (FileCreateShortcut) создаются без иконок, в свойствах путь указан. Если нажимаю применить иконку, то она появляется, и lnk увеличивается в полтора раза по размеру. Указывал путь к иконке и с кавычками и без.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 05:28 31-08-2010 | Исправлено: AZJIO, 05:30 31-08-2010
    Cegpuk



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Везде в коде можно использовать ' вместо "? Если да, то почему все используют двойные кавычки, ведь иногда одинарные предпочтительней? Или лучше использовать ""?

    Цитата:
    If you want to use double-quotes inside a string then you must "double them up".  So for every one quote you want you should use two.  For example if you wanted to set a variable to the string: A word in "this" sentence has quotes around it!  You would do:
        $var = "A word in ""this"" sentence has quotes around it!"
    or use single quotes instead:
        $var = 'A word in "this" sentence has quotes around it!'

    Всего записей: 287 | Зарегистр. 24-01-2007 | Отправлено: 06:33 31-08-2010 | Исправлено: Cegpuk, 06:35 31-08-2010
    Bobr69



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kar1son
    Да нет, все нормально изменяется

    Всего записей: 28 | Зарегистр. 27-11-2007 | Отправлено: 08:44 31-08-2010
    WildNightWolf



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Cegpuk
    Абсолютно разницы никакой! Кому как нравится. Я например использую ', потому, что мне лень нажать Shift
    Я тоже когда-то интересовался этим вопросом. Даже в русской справке написано:

    Цитата:
    Параметры заголовок и надпись являются строками текста , поэтому их требуется заключать в одинарные или двойные кавычки, причем строки "This is some text" или 'This is some text' равноценны.


    Всего записей: 437 | Зарегистр. 27-08-2010 | Отправлено: 22:33 01-09-2010 | Исправлено: WildNightWolf, 22:46 01-09-2010
    frb_noname

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть код, в котором производится вставка данных в БД SQLite. Вставка производится много (от 100 и больше) раз в цикле. Соответственно возникает тормоз от 1-2 минут и больше. На форумах нашел информацию о том, что нужно делать "многострочную вставку" (multirow insert) или сделать это в одной транзакции.  
    Как это практически реализовать ?  Прошу Вашей помощи.
     

    Код:
    Func addallfiles()
        ;=========== чистим буферную базу =============================
        If Not _SQLite_Exec (-1, "delete from bazadir;") = $SQLITE_OK Then MsgBox(16, "SQLite Error", _SQLite_ErrMsg ())
        ;========== получаем в массив имена всех файлов из директории ==========
        $filename1 = _FileListToArray(@scriptdir)
       
     
     
     ;====== для каждой записи массива выполняем ===================
        For $x=1 to UBound($filename1)-1
            ;======== выделение из всего пути имени непосредственно файла ========
            $filename=StringRight($filename1[$x],stringlen($filename1[$x])-stringInStr($filename1[$x],"\",2,-1))
                    ;======= выделяем дату из имени файла ===============
                    $filedate=StringMid($filename, 9,2) & "." & StringMid($filename, 7,2) & "." & StringMid($filename, 3,4)
                    ;========== вставка данных в буфернную базу ========
                    If Not _SQLite_Exec (-1, "INSERT INTO bazadir VALUES (null,'"& $filename & "','"& $filedate & "','');") = $SQLITE_OK Then _
                    MsgBox(16, "SQLite Error", _SQLite_ErrMsg ())
        Next
     
     
            ;=== вставка из буферной таблицы в базу тех имен файлов, которых в базе еще нет ====
                If Not _SQLite_Exec (-1, "insert into baza select null,filename,filedate,descript from bazadir where bazadir.filename not in (select baza.filename from baza);") = $SQLITE_OK Then _
                MsgBox(16, "SQLite Error", _SQLite_ErrMsg ())
     
     
     
    select_all()
    EndFunc ;=====>>> addallfiles ========

    Всего записей: 47 | Зарегистр. 03-11-2008 | Отправлено: 09:40 02-09-2010 | Исправлено: frb_noname, 09:55 02-09-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