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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zloy_Gelud
    Я COUNT видел на wiki, но в примерах выдаёт какие то нереальные цифры.
    Но я не уверен был что всё что там написано поддерживает SQLite, потому что там общие понятия.

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 09:51 27-08-2013 | Исправлено: AZJIO, 09:52 27-08-2013
    Zloy_Gelud



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO -- ну я попробовал на примере из справки - показала правильное количество строк.

    Всего записей: 3265 | Зарегистр. 30-05-2007 | Отправлено: 10:12 27-08-2013
    AZJIO



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

    Код:
    #include <SQLite.au3>
    #include <SQLite.dll.au3>
     
    Local $hQuery, $aRow
    _SQLite_Startup()
    _SQLite_Open()
    _SQLite_Exec(-1, "Create table tblTest (a,b int,c single not null);" & _  ; создаёт таблицу "tblTest"
            "Insert into tblTest values ('1',2,3);" & _ ; вставляет значения в таблицу
            "Insert into tblTest values (Null,5,6);")
     
    _SQLite_Query(-1, "SELECT COUNT(*) FROM tblTest;", $hQuery)
    If _SQLite_FetchData($hQuery, $aRow, False, False) = $SQLITE_OK Then
        MsgBox(0, 'Сообщение', 'Количество элементов в таблице = ' & $aRow[0])
    Else
        MsgBox(0, 'Ошибка', 'Ошибка')
    EndIf
    _SQLite_QueryFinalize($hQuery) ; завершает запрос
     
    _SQLite_Close()
    _SQLite_Shutdown()

     
    Вставить строку тоже удалось используя нативный идентификатор ROWID

    Код:
    Func _Insert_Service($tmp) ; функция добавления элементов в файл базы
        Local $hQuery, $sRow
        If _SQLite_QuerySingleRow(-1, "SELECT ROWID,* FROM Service WHERE Сервис = '" & $tmp & "';", $sRow) = $SQLITE_OK Then
            GUICtrlSetData($iStatusBar, 'Уже существует эта услуга в списке')
        Else
            _SQLite_Exec(-1, "INSERT INTO 'Service'(Сервис) VALUES ('" & $tmp & "');") ; Вставка новой
            GUICtrlSetData($iStatusBar, 'Строка изменена, |' & $sRow & '|')
        EndIf
    EndFunc
      ;==>_Insert_Service

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 10:17 27-08-2013 | Исправлено: AZJIO, 11:09 27-08-2013
    ndch

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    autoit 3.3.8.1
    запускаю Extras\Au3Record\Au3Record.exe
    записываю действия
     
    получается скриптик
    Подробнее...
    При попытке запуска этого .au3
    Вылетает окно autoit с предупреждением об ошибке.
     
    при переименовании в скрипте AU3RecordSetup() в _AU3RecordSetup() работает.
     
    Вопрос: что я делаю не так ? Или это фирменная фишка ?
    И ещё вопрос: есть "записывалки" понимающие скролл мыши ?

    Всего записей: 6477 | Зарегистр. 31-08-2008 | Отправлено: 10:33 28-08-2013 | Исправлено: ndch, 10:47 28-08-2013
    Zloy_Gelud



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

    Цитата:
    при переименовании в скрипте AU3RecordSetup() в _AU3RecordSetup() работает.  

    Ну все верно. Т.к. функции AU3RecordSetup() нету, а есть _AU3RecordSetup(). Наверно баг программы.

    Всего записей: 3265 | Зарегистр. 30-05-2007 | Отправлено: 10:55 28-08-2013
    ndch

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    И ещё при записи нажатие {ENTER} теряется.
     
    Может кто отрапортует ?

    Всего записей: 6477 | Зарегистр. 31-08-2008 | Отправлено: 11:56 28-08-2013
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO,
    Можно еще так сделать проверку на уникальность при добавлении нового значения в базу.
    Код:
    #include <SQLite.au3>
    ;~ #include <SQLite.dll.au3>
    Local $aResult, $iRows, $iColumns, $sRand
    _SQLite_Startup()
    _SQLite_Open()
    _SQLite_Exec(-1, "CREATE TABLE test (First_column string unique);")
     
    For $i = 1 To 1000
        $sRand = Chr(Random(97, 122, 1))
        If _SQLite_Exec(-1, "INSERT OR IGNORE INTO test VALUES ('" & $sRand & "');") <> $SQLITE_OK Then ContinueLoop
        If _SQLite_Changes() Then
            ConsoleWrite($sRand & ' --> ' & 'INSERT' & @LF)
        Else
            ConsoleWrite($sRand & ' --> ' & 'IGNORE' & @LF)
        EndIf
    Next
    If _SQLite_GetTable2d(-1, "SELECT * FROM test;", $aResult, $iRows, $iColumns) = $SQLITE_OK Then
        _ArrayDisplay($aResult)
        _ArraySort($aResult, 0, 1)
        _ArrayDisplay($aResult)
    EndIf
    _SQLite_Close()
    _SQLite_Shutdown()

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 08:09 29-08-2013 | Исправлено: madmasles, 08:13 29-08-2013
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Спасибо.
     
    Хочется выучить базы данных, востребованный инструмент. Примущество перед обычным текстовым файлов в том, что при записи файл не происходит перезапись всего файла, а только установка файлового указателя и запись в позицию. То есть заезживание жёсткого диска снижено до минимума. Ну и кроме этого использования внутреннего движка, что ускоряет обработку. На офсайте даже темы типа сравнение файлов через базу. Это конечно не экономично, но некоторые внутренние функции вполне можно использовать в своих целях, если скрипт сам по себе уже использует SQL.
     
    На wiki в конце есть пример как сложить данные и сделать вывод во временную таблицу. То есть SUM - для суммирования, CREATE VIEW - создать таблицу для просмотра. Фактически если есть желание разобраться, я хочу сделать вывод данных по определённому критерию, например в пределах определённых дат и потом суммировать результаты. Например критерий из базы "ФИО" и "имя услуги", то есть сделал выборку, нашёл 30 строк, но в вывод выдать результат только одну строку, где суммируется оплата по сделками. В принципе сейчас я сделал цикл, но хотел попробовать использовать нативный запрос к базе данных.
     
    Вот пример того что я делаю Program.7z (без исходника).

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 14:48 29-08-2013 | Исправлено: AZJIO, 01:42 30-08-2013
    Unc1e

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем доброго времени суток! Подскажите как на IE странице искать нужный элемент и, если он присутствует, закрывать её? Искомый элемент имеет примерно такой вид
    Код:
    <span class="city"><b>город:</b> Moscow</span>
    То есть если город Москва - закрываем браузер.

    Всего записей: 434 | Зарегистр. 11-06-2007 | Отправлено: 08:13 31-08-2013
    ndch

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сопряжённый с AutoIT вопрос: чем (каким софтом) мониторить имена появляющихся  окон (хотелось бы что бы было приблизительно как в processmonitor).
    Т.е. чтобы можно было анализировать не в реальном времени, а "потом".

    Всего записей: 6477 | Зарегистр. 31-08-2008 | Отправлено: 12:35 31-08-2013 | Исправлено: ndch, 12:58 31-08-2013
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Unc1e
    Проверить нахождение этой строки в источнике - StringInStr
    InetRead чтобы скачать страницу
     
    ndch
    WinList - получить окна

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 14:43 31-08-2013
    ndch

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    WinList  к фару ?
    Если да, то переформулирую : нужна лог, а не отображение текущего состояния.

    Всего записей: 6477 | Зарегистр. 31-08-2008 | Отправлено: 15:32 31-08-2013
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сделал скрипт для перевода GUI на родной язык. Смысл такой:
    1. Открываем скрипт, он вываливает в окно список всех найденных текстов.
    2. Переводим текст в QTranslate и возвращаем перевод в тоже самое окно.
    3. Жмём кнопку "перевод", и в буфер получаем готовый скрипт.
    Есть режим замены по местам. Есть режим создание массива в шапку.
    Подводные камни: ну Google ни как не переведёт так чисто чтобы не повставлять пробелы и к тому же среди текстов могут быть регулярные выражения, то есть всё равно ручками делать, но рутиная работа по моему сведена к минимуму.
     
    ndch
    Типа зарегистрировать хук, который будит ловить событие создания окна?

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 20:53 31-08-2013 | Исправлено: AZJIO, 20:53 31-08-2013
    Unc1e

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO, спасибо, получилось (посредством BinaryToString)

    Всего записей: 434 | Зарегистр. 11-06-2007 | Отправлено: 21:13 31-08-2013
    dialmak



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Это последняя http://narod.ru/disk/40534860001/AutoIt_Help_White_and_Black.7z.html ?
     
    Добавлено:
    Нашёл вроде http://u.to/KfkBAQ

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 22:51 31-08-2013
    Kostyas

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как отрезать file.extension с помощью String Function если окончание может состоять из трех или четырех знаков после точки? Т.е. StringRight не годится. (Имеем Image.tiff или image.tif, нужно получить tiff, tif).
    Спасибо.

    Всего записей: 181 | Зарегистр. 05-02-2003 | Отправлено: 00:40 01-09-2013
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 20:53 31-08-2013
       
    Цитата:
    Сделал скрипт для перевода GUI на родной язык

    Есть ещё ATT - Инструмент добавления мультиязычности в скрипт.
     
    Добавлено:
    Kostyas 00:40 01-09-2013
    Цитата:
    Как отрезать file.extension


    Код:
    $vTest = 'file.extension'
    $sRet = StringRegExpReplace($vTest, '\.[^.]*$', '')
     
    ConsoleWrite($sRet & @LF)


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 02:15 01-09-2013
    Kostyas

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Спасибо, но мне нужно именно окончанине после точки. ( exe, jpg, tiff и так далее).

    Всего записей: 181 | Зарегистр. 05-02-2003 | Отправлено: 08:04 01-09-2013
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Kostyas 08:04 01-09-2013
    Цитата:
    мне нужно именно окончанине после точки


    Код:
    $sRet = StringRegExpReplace($vTest, '^.*\.([^\.]*)$', '\1')


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 08:23 01-09-2013
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Я пробовал этот скрипт codescanner, но твоя программа зависла, как и моя. В моей выявилась проблема в функции удаления комментариев. Хотя это редкий случай, сколько пользоваля ни разу не было проблем. Во вторых мне кажется это слишком сложно. И не всегда требуется сделать отдельный файл, потому что те примеры так и остануться примерами в которых просто хотелось бы добавить поддержку родного языка. Любой кто скачает в качестве второго просто впишет свой язык. А для тех программ что делать для готового варианта, то они столько времени пишуться, что 1 час на перевод это слишком мало, чтобы автоматизировать для разового случая. И сечас я ещё не сделал внешнюю UDF, пока у меня некий алгоритм вмонтирования функций поддержки в скрипт с исходного упрощённого примера, и этот пример уже намного проще, там используется 1="Текст", а не абревиатура="Текст". А если это ещё не перерасло в устоявшееся, то мне достаточно пока того что я сделал, тем более способ конвертировать массив в вариант поддержки внешнего файла у меня есть. Копирую  массив в ini-файл, заменяю "$Lng[" на ничего, заменяю "] = '" на "=", удаляю все апострофы, и готово. Из $Lng[1] = 'Сообщение' получается 1=Сообщение

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 11:05 01-09-2013 | Исправлено: AZJIO, 11:14 01-09-2013
       

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