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

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Возник небольшой вопрос...
    Создаю окно в нем несколько lable'лов, input'ов и 2 combobox'а.
    При выборе одного из значений combobox форма увеличивается в размере и добавляется еще несколько lable'лов и input'ов.
    Теперь внимание проблема:
    Не возможно вписать в старые input'ы значения...хотя по кнопке Tab в них переходит курсор и в этом случае ввод данных возможен...
     
    Прекрасно понимаю, что нужно пересоздать форму, НО не знаю как
     
    Вот код формы...
     

    Код:
    Func Addname()
        GUISetState(@SW_DISABLE, $body)
        global $addingwight=200, $addinghight=330
        $adding = GUICreate("Добавление", $addingwight, $addinghight, -1, -1, -1, -1)
        GuiSetState(@SW_SHOW, $adding)
        GUISetOnEvent($GUI_EVENT_CLOSE, "WINDadding")
        $name0=GUICtrlCreateLabel("Наименование", 15, 48)
        GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP)
        $name = GUICtrlCreateInput("", 10, 63, 180, 20)
        GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP+$GUI_DOCKHEIGHT)
        $proizvod0=GUICtrlCreateLabel("Производитель", 15, 92)
        GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP)
        $proizvod = GUICtrlCreateCombo("", 10, 107, 180, 20)
        GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP)
        GUICtrlSetState($proizvod, BitOr($GUI_DROPACCEPTED, $WS_EX_ACCEPTFILES))
        $rozn0=GUICtrlCreateLabel("Розница", 15, 134)
        GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP)
        $rozn = GUICtrlCreateInput("", 10, 148, 180, 20)
        GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP+$GUI_DOCKHEIGHT)
        $sebes0=GUICtrlCreateLabel("Себестоимость", 15, 176)
        GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP)
        $sebes = GUICtrlCreateInput("", 10, 190, 180, 20)
        GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP+$GUI_DOCKHEIGHT)
        $comment0=GUICtrlCreateLabel("Комментарий(опционально)", 15, 217)
        GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM + $GUI_DOCKSIZE + $GUI_DOCKHCENTER)
        $comment = GUICtrlCreateInput("", 10, 232, 180, 60, $ES_MULTILINE + $ES_AUTOVSCROLL)
        GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
        $Create = GUICtrlCreateButton("Создать запись", 12, 299, 100, 24, $BS_DEFPUSHBUTTON)
        GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM + $GUI_DOCKSIZE + $GUI_DOCKHCENTER)
        GUICtrlSetOnEvent(-1, "NewItem")
        $Cancel = GUICtrlCreateButton("Отмена", 130, 299, 50, 24)
        GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM + $GUI_DOCKSIZE + $GUI_DOCKHCENTER)
        GUICtrlSetOnEvent(-1, "WINDadding")
        $razd = GUICtrlCreateCombo("", 20, 16, 160, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
        GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP+$GUI_DOCKHEIGHT)
        GUICtrlSetData(-1, "Котлы|Горелки|Дополнительно|Монтаж|Радиаторное отопление|Напольное отопление|Напольное отопление с ал пластинами", "Котлы")
        GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    EndFunc   ;==>Addname
    Func combox()
        If GUICtrlRead($razd )="Котлы" Then
            $aBkGUI_Pos = WinGetPos($adding)
            WinMove($adding, "", $aBkGUI_Pos[0],$aBkGUI_Pos[1],$aBkGUI_Pos[2]+50, $aBkGUI_Pos[3]+168,1)
            GUICtrlCreateLabel("Мощность на дизельном/газовом топливе", 15, 218)
            $gaz = GUICtrlCreateInput("", 10, 232, 225, 20)
            GUICtrlCreateLabel("Мощность на твердом топливе", 15, 260)
            $tvtop = GUICtrlCreateInput("", 10, 274, 225, 20)
            GUICtrlCreateLabel("Мощность на электрическом топливе", 15, 302)
            $elect = GUICtrlCreateInput("", 10, 316, 225, 20)
            GUICtrlCreateLabel("Производительность змеевика ГВС", 15, 344)
            $gvs= GUICtrlCreateInput("", 10, 358, 225, 20)
        EndIf
    EndFunc
    Func
    WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
        #forceref $hWnd, $iMsg
        Local $hWndFrom, $iIDFrom, $iCode, $hWndCombo
        If Not IsHWnd($proizvod) Then $hWndCombo = GUICtrlGetHandle($proizvod)
        If Not IsHWnd($razd) Then $hWndCombo1 = GUICtrlGetHandle($razd)
        $hWndFrom = $ilParam
        $iIDFrom
    = BitAND($iwParam, 0xFFFF)
        $iCode = BitShift($iwParam, 16)
        Switch $hWndFrom
            Case $proizvod, $hWndCombo
                Switch $iCode
                    Case $CBN_EDITCHANGE
                        _Edit_Changed()
                EndSwitch
            Case $razd, $hWndCombo1
                Switch $iCode
                    Case $CBN_SELCHANGE
                        combox()
                EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
    EndFunc   ;==>WM_COMMAND
    Func _Edit_Changed()
        _GUICtrlComboBox_AutoComplete($proizvod)
    EndFunc   ;==>_Edit_Changed

    Всего записей: 53 | Зарегистр. 16-11-2008 | Отправлено: 17:05 23-04-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    я проверил таймаут, на всякий случай, не работает. Пинг не причём, пинг есть так как айпишнек есть, а сервер фтп выключен. В этом случае 20 сек на один айпишнек.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 17:06 23-04-2010 | Исправлено: AZJIO, 14:52 16-05-2010
    TimoXa_Skot



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Хм...так и не понял почему не верно выполняется функция _WinAPI_SetWindowPos, но она не увеличивает размер окна...
    К своему посту выше
     
    Заменил:
     
    $aBkGUI_Pos = WinGetPos($adding)  
    WinMove($adding, "", $aBkGUI_Pos[0],$aBkGUI_Pos[1],$aBkGUI_Pos[2]+50, $aBkGUI_Pos[3]+168,1)  
     
    На:
     
    $Pos = WinGetPos($adding)  
    WinMove($adding, "", $Pos[0],$Pos[1],$Pos[2]+50, $Pos[3]+168,1)  
    $Pos[2]=$Pos[2]+50
    $Pos[3]= $Pos[3]+168
    _WinAPI_SetWindowPos(GUICtrlGetHandle($adding),0, $Pos[0],$Pos[1],$Pos[2],$Pos[3],True)  
     
     Теперь работает корректно  вопросы почему остались....видимо с ними придется мирится...

    Всего записей: 53 | Зарегистр. 16-11-2008 | Отправлено: 23:22 24-04-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    TimoXa_Skot
    Я не стал разбираться так как пример дан как функция, даже запустить посмотреть невозможно.
    Разве внутри функции global ставят?
    пример очистки комбобокс
    GUICtrlSendMsg($list, 0x14B, 0, 0)
     

    Цитата:
    Не возможно вписать в старые input'ы значения

    у меня такая ошибка была когда одни элементы перекрывают другие, например лэйбл по размеру перекрывает инпут, текст в лейбл короткий и в оболочке не заметно перерытие. Когда пытаюсь ввести в инпут, фактически пытаюсь ставить курсор на лэйбл. Тоже самое бывает с чекбоксом, но его сразу заметно.
    _______________________________
     
    У меня проблема создания регекспа '\$\w+' для детектирования переменных в скрипте. Осталось исключить "\\$0" и закомментированные переменные.
     
    скрипт, отображающий имена переменных и функций в прочитанном скрипте. Первый раз происходит чтение кода с буфера обмена, далее можно кидать скрипты в окно скрипта.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 01:37 25-04-2010 | Исправлено: AZJIO, 09:15 25-04-2010
    Pacho



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

    Всего записей: 263 | Зарегистр. 02-04-2005 | Отправлено: 10:55 25-04-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 01:37 25-04-2010
    Цитата:
    У меня проблема создания регекспа '\$\w+' для детектирования переменных в скрипте. Осталось исключить "\\$0" и закомментированные переменные.

    Что нужно получить на выходе, массив рабочих переменных? и что такое «\\$0»?
     
    Pacho 10:55 25-04-2010
    Цитата:
    Можно ли на AutoIt такую написать?

    Можно.
     

    Цитата:
    в какую сторону смотреть?

    WinGetText и ClipPut.
     
    Добавлено:
    AZJIO
    В шапке есть твои утилиты, они под категорией «Ресурсы, посвящённые AutoIt», однако это не ресурс, я тебе советую открыть сайт например на ucoz, тогда ты сможешь более корректно выкладывать свои творения, и они будут лучше замечены.
     
    P.S
    По поводу скрипта удаления пробелов с руборда, см. тут, это намного удобнее.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 13:41 25-04-2010 | Исправлено: ViSiToR, 13:42 25-04-2010
    Pacho



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

    Код:
    If <условие> Then
      выполняются действия над <массивом_1>
    Else
      выполняются те же действия над <массивом_2>
    EndIf

    Можно как-то сделать так?

    Код:
    If <условие> Then
      задаётся, что действия будут выполнятся над <массивом_1>
    Else
      задаётся, что действия будут выполнятся над <массивом_1>
    EndIf
     
    Выполняются действия над заданным массивом

    А то блок <выполняются действия над <массивом>> довольно большой, чтобы его по два раза писать.

    Всего записей: 263 | Зарегистр. 02-04-2005 | Отправлено: 14:32 25-04-2010 | Исправлено: Pacho, 14:32 25-04-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Pacho 14:32 25-04-2010
    Цитата:
    Можно как-то сделать так?

    Можно, для этого есть пользовательские функции:
     

    Код:
     
    If 1 = 1 Then
        ;задаётся, что действия будут выполнятся над <массивом_1>
        _ArrayAction_Proc($aArray1)
    Else
        ;задаётся, что действия будут выполнятся над <массивом_2>
        _ArrayAction_Proc($aArray2)
    EndIf
     
    Func _ArrayAction_Proc($avArray)
        ;Выполняются действия над заданным массивом, внутри функции это переменная $avArray
        ....
    EndFunc


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

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



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

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

    Пишет: "Не удалось определить путь к Internet Explorer."
     

    Цитата:
    то нужно получить на выходе, массив рабочих переменных? и что такое «\\$0»?  
    Да, на выходе нужно получить массив переменных, и он уже получается, вот только не разобрался как в регекспе сделать игнорирование данных, которые стоят перед нужным текстом, например для '\$\w+' в конце можно добавить (?=text) или [^:игнорируемые символы:], а как добавить исключаемые перед '\$\w+', например '[^;]*\$\w+' чтоб выражение звучало так: должен найден образец, в котором первым символом не могут быть кавычки.
    Символ  «\\$0» у меня находится в регекспе
    StringRegExpReplace($aText1[$i], "[$]", "\\$0")
    И на него тоже нужно поставить исключение - образец не должен перед $ иметь символ \\, в правильных переменных такая запись невозможна.

    Цитата:
    В шапке есть твои утилиты, они под категорией «Ресурсы, посвящённые AutoIt», однако это не ресурс,
    это называется формальность, ради честного слова "ресурс" создавать сайт и получится та же конфетка в другой упаковке. Я сделал возможность не искать по теме скрипты, а увидеть в шапке упорядоченно и это является удобнее и мне и другим пользователям. Тем более сделал некоторую подборку скриптов из этой же темы, и это облегчает первое знакомство с AutoIt3. Пользователь отталкивается от достигнутого а не начинает по крупицам собирать знания. Даже хотел сделать предложение обновить справку, если её перекомпилировать и каждый бы взял себе по три пять страниц где замечены недостатки, то можно создать обновлённую справку с более рабочими примерами. Может в англ. справке на 5% чего-то обновлено/добавлено, но за счёт непонимания языка в реале ничему не научишься, вместо интерактивного изучения приходится переводить текст страницы, пытаясь понять что имел ввиду автор.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 16:19 25-04-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 16:19 25-04-2010
    Цитата:
    Пишет: "Не удалось определить путь к Internet Explorer."

    Какая версия IE?
     

    Цитата:
    как добавить исключаемые перед '\$\w+', например '[^;]*\$\w+'


    Код:
    #include <Array.au3>
     
    $vTest = _
        '$var1' & @CRLF & _         ;Valid
        ';$var2' & @CRLF & _        ;NOT Valid (commented)
        '$var3&$var4' & @CRLF & _   ;Both Valid
        '"$var5"' & @CRLF           ;NOT Valid (inside string)
     
    $aRet = StringRegExp($vTest, '(?:\A|[^\\"'';\w])(\$\w+)', 3)
    _ArrayDisplay($aRet)

    Но лучше не исключать, а чётко написать что там может присутствовать:

    Код:
    $aRet = StringRegExp($vTest, '(?:^|[\s\Q&,*+-^/=()[]<>\E]+)(\$\w+)', 3)

     

    Цитата:
    это называется формальность, ради честного слова "ресурс" создавать сайт и получится та же конфетка в другой упаковке.

    Ради удобства, и конфетка совсем не таже
    Ещё вариант - создавать темы на форуме «Русское сообщество AutoIt» в разделах примеров, и тут в шапке указать ссылку с поисковым запросом на все созданные тобой темы в тех разделах - вот к примеру ссылка на мои темы.

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

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



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

    Цитата:
    Какая версия IE?  

    IE8, а вот точный текст мессаги:
    Цитата:
    He yдaлocь oпpeдeлить пyть к Internet Exp orer.
    [C:\Program Fi es\Internet Exp orer\PLUGINS]
    OK   --->   EXIT

     
    Я хотел в исходник Au3ToPost.au3 добавить $CmdLine[0], чтоб передавать код на обработку через ком-строку, точнее прописать в контекстное меню реестра для au3, чтоб одним кликом послылать на обработку, а не искать ярлык программы/путь к файлу... Но увидел там при нажатии Shift принимается скрипт как параметр. Но у меня вылетает, если кидаю скрипт на Au3ToPost.exe удерживая Shift, то в трее пишет началась обработка, и далее окно ошибки - "Отправлять майкрософт отчёт?".
    В общем удобнее сделать два варианта, если в ком-строке что-то есть (путь), то обработать файл и результаты отправить в буфер. И второй вариант - если удерживается Shift, то при старте скопировать данные из буфера, обработать и выдать опять же в буфер. За несколько месяцев использования программы я других действий не юзал. В окне программы я скрипт никогда не правлю, оно маленькое и подцветки синтаксиса нет, количество символов тоже ни о чём не говорит, скрипты более 300 строк приходится по частям обрабатывать, и поэтому в редакторе просаматриваю всегда до скольки обработан код, обрезаны ли последние строчки. Если эти два варианта будут поддерживаться, то никогда не возникнет напрягов даже небольшой код пропустить через Au3ToPost.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 19:20 25-04-2010 | Исправлено: AZJIO, 19:27 25-04-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 19:20 25-04-2010
    Цитата:
    IE8

    На нём не тестировалось.
     

    Цитата:
     вот точный текст мессаги

    А куда делась буква «l»?  
     

    Цитата:
    Au3ToPost.au3

    Последняя версия написана для AutoIt 3.3.0.0. И я его собираюсь серъёзно обновлять, добавив в него AutoItSyntaxHighlight - Библиотека для подсветки синтаксиса AutoIt-кода.
     

    Цитата:
    оно маленькое

    Оно растягивается.
     

    Цитата:
    подцветки синтаксиса нет

    Это не редактор, оно иногда нужно для быстрой поправки.
     

    Цитата:
    количество символов тоже ни о чём не говорит

    На многих форумах есть ограничение в количестве символов отправляемого сообщения, для этого оно и нужно.
     

    Цитата:
    скрипты более 300 строк приходится по частям обрабатывать

    Зачем? какая версия у тебя?

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

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



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

    Цитата:
    А куда делась буква «l»?  
    глюк Kleptomania когда шрифтов много.

    Цитата:
    Зачем? какая версия у тебя?
    Обе версии 1.9 и 2.0 глючат одинаково, например скрипт SaveFolders/portable_v1.6_AutoIt3 по частям всегда конвертирую. Если 500 строк, то стабильно знаю что придётся по частям.
     

    Цитата:
    Оно растягивается.  
    Это не редактор, оно иногда нужно для быстрой поправки.  
    На многих форумах есть ограничение в количестве символов отправляемого сообщения, для этого оно и нужно.  
    На практике это не пригождается, если только как второстепенная фича. В нормальном редакторе всё подправил, сохранил, потом из контекстного меню было бы удобно сразу получить результат для вставки в пост. И вариант с с буфером обмена тоже нужен, когда нужно выложить часть скрипта, скопировав из редактора. Промежуточное открытие кода ни к чему, уже вставив в пост увижу что всё нормально. А при превышении символов, чаще это оговаривается где нибудь в правилах, или при выдаче ошибке что введённый текст превышает лимит, но и в этом случае любой редактор показывает количество выделенных символов и при желании можно аккуратно подрезать. На использование ссылок на справку тоже можно ключ добавить, но я этим не пользуюсь, только утяжеляет пост, а справку использую только русскую, англ. при спорных вопросах очень редко.
    Удобней так: старт без параметров выдаёт весь интерфейс программы, а старт с параметром файла выдавать готовый результат в буфер.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 23:55 25-04-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 23:55 25-04-2010
    Цитата:
    Обе версии 1.9 и 2.0 глючат одинаково

     

    Цитата:
    v2.0
    ...
    * Убрано ограничение на результат с предыдущей версии. А также снято ограничение с Edit-поля.

    В чём глюк, я конвертирую большие скрипты в несколько тысяч строк, никаких проблем.
     

    Цитата:
    На практике это не пригождается

    Тебе
     

    Цитата:
    В нормальном редакторе всё подправил, сохранил, потом из контекстного меню было бы удобно сразу получить результат для вставки в пост

    Это добавлю.
     

    Цитата:
    при превышении символов, чаще это оговаривается где нибудь в правилах, или при выдаче ошибке что введённый текст превышает лимит

    Так а зачем вообще до поста доходить, если заранее можно узнать что число символов превысило лимит.
     

    Цитата:
    и в этом случае любой редактор показывает количество выделенных символов и при желании можно аккуратно подрезать

    Редактор не показывает число символов после подсветки
     

    Цитата:
    На использование ссылок на справку тоже можно ключ добавить

    В настройках это можно убрать.
     

    Цитата:
    Удобней так

    Я делал утилиту в первую очередь под свои нужды - я использую SciTE, мне удобно оттуда запустить утилиту раскраски, раскрасить, и скопировать текст. Последние версии учитывали пожелания народа, следующая версия будет совсем другая, я бы даже сказал это вообще будет другая утилита, возможно и с другим названием.

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

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



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

    Цитата:
    Тебе
    дык я понимаю что выражаю одну точку зрения хотел услышать реальных оппонентов. Я не принижаю значение многих фич. Я просто хочу показать важность ком-строки. Notepad++, которым я пользуюсь показывает количество символов, но это никогда не было важно, так "тяжёлый" код редко приходится выкладывать, у меня только скрипт "Ассоциатор" не смог принять ru-board в расскраске.
     
    Вот смотри, в Au3ToPost строчка последняя, а в portable_v1.6_AutoIt3.au3 это половина скрипта.

     
    Кстати тестил скрипт "поиск переменных" на UDF, так WinAPI.au3 (363кб) у меня обработался, а WinAPIEx.au3 (676кб) не переварил.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 02:02 26-04-2010
    Kar1son

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как можно поймать изменение в поле Edit или Input?(не сравнивать каждый раз что там было  и что стало а имеено событие?)

    Всего записей: 187 | Зарегистр. 23-08-2006 | Отправлено: 16:53 26-04-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kar1son
    мне sproxy где-то давал скрипт, но что-то у меня не работает пример, а ведь тот скрипт работал, при вводе данных кнопка деактивировалась. Но как видишь идея та же, проверка изменения ввода данных.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 17:19 26-04-2010 | Исправлено: AZJIO, 17:23 26-04-2010
    Kar1son

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

    Цитата:
    Func _CheckInput($hInput, $sRegMask, $hButton)  
    Local $sText = GUICtrlRead($hInput)  
    ;~ $sText = StringStripWS($sText, 1+2); если есть желание  
    If StringRegExp($sText, $sRegMask) Then  
    If BitAnd(GUICtrlGetState($hButton), $GUI_ENABLE) Then GUICtrlSetState($hButton, $GUI_DISABLE)  
    Return  
    EndIf  
    If BitAnd(GUICtrlGetState($hButton), $GUI_DISABLE) Then GUICtrlSetState($hButton, $GUI_ENABLE)  
    EndFunc

     нужно какраз в эту функцию както попасть когда Input поменялся

    Всего записей: 187 | Зарегистр. 23-08-2006 | Отправлено: 17:26 26-04-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kar1son
    эта функция проверки инпута. В цикле постоянно происходит вызов функции  _CheckInput, которая проверяет изменился ли импут, проверяет вхождения $sRegMask в $sText, если да, то проверяет некоторое значание, взависимости от которого активирует или деактивирует кнопку, это и есть событие к которому можно привязать всё что угодно, новую функцию, новый цикл, команду. А условие для детекта изменений можно тоже изменить.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 19:34 26-04-2010 | Исправлено: AZJIO, 19:52 26-04-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 19:34 26-04-2010
    Цитата:
    это и есть событие к которому можно привязать всё что угодно

    Это не события, а обработка данных вводимых в элемент окна, событие это реакция на ввод, для этого нужно отлавливать спец. сообщения, см. далее...
     
    Kar1son 16:53 26-04-2010
    Цитата:
    как можно поймать изменение в поле Edit или Input?

    Вот так:
     

    Код:
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <ComboConstants.au3>
     
    Global $iInputs_Changed = 0
     
    GUICreate("Input Changed Demo GUI", 300, 140)
     
    $Input_1 = GUICtrlCreateCombo("Combo", 20, 10, 260, 20)
    $Input_2 = GUICtrlCreateEdit("Edit", 20, 40, 260, 20)
    $Input_3 = GUICtrlCreateInput("Input", 20, 70, 260, 20)
     
    $Exit = GUICtrlCreateButton("Exit", 20, 100, 60, 20)
     
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
     
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $Exit
                ExitLoop
        EndSwitch
     
        ;Это только для предотвращения задержки callback-функции (WM_COMMAND) - событие проверяется именно там
        If $iInputs_Changed Then
            _Input_Changed($iInputs_Changed)
            $iInputs_Changed = 0
        EndIf
    WEnd
     
    Func _Input_Changed($ID)
        Printf("Input [" & $ID & "] Changed: " & GUICtrlRead($ID) & @LF)
    EndFunc   ;==>_Input_Changed
     
    Func _Input_GotFocus($ID)
        Printf("Input [" & $ID & "] Got Focus" & @LF)
    EndFunc   ;==>_Input_GotFocus
     
    Func _Input_LostFocus($ID)
        Printf("Input [" & $ID & "] Lost Focus" & @LF)
    EndFunc   ;==>_Input_LostFocus
     
    Func WM_COMMAND($hWnd, $nMsg, $wParam, $lParam)
        Local $nNotifyCode = BitShift($wParam, 16)
        Local $nID = BitAND($wParam, 0xFFFF)
        Local $hCtrl = $lParam
     
        Switch $nID
            Case $Input_1, $Input_2, $Input_3
                Switch $nNotifyCode
                    Case $EN_CHANGE, $EN_UPDATE, $CBN_EDITCHANGE, $CBN_EDITUPDATE
                        $iInputs_Changed
    = $nID
                    Case $EN_SETFOCUS, $CBN_SETFOCUS
                        _Input_GotFocus($nID)
                    Case $EN_KILLFOCUS, $CBN_KILLFOCUS
                        _Input_LostFocus($nID)
                EndSwitch
        EndSwitch
     
        Return $GUI_RUNDEFMSG
    EndFunc   ;==>WM_COMMAND
     
    Func Printf($Str, $Line=@ScriptLineNumber)
        ConsoleWrite(@LF & "+======================================================" & @LF & _
                    "--> Script Line (" & $Line & "):" & @LF & "!" & @TAB & $Str & @LF & _
                    "+======================================================")
    EndFunc


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 20:55 26-04-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

    Компьютерный форум 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