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

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

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

Widok (12-01-2009 14:47): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

AddXL

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

AutoIt3

 
Домашняя страница: http://www.autoitscript.com
Страница загрузки: http://www.autoitscript.com/autoit3/downloads.php
 
Описание:

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

 
Помощь по AutoIT:
  • Справку на русском (и не только) вы всегда(?) сможете найти тут
  • Справочник по командам rundll32
  • Русский справочник по API-функциям
  • Помощь по Регулярным выражениям
  • AutoIt v3: Your Quick Guide (652 КБ) - Ваш быстрый гид в мир AutoIt-а (книга в формате pdf)
     
    Инструметы для 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:
  • Коллекция AutoIt скриптов от Sanja Alone
  • Коллекция скриптов на http://msfn.org
  • Пополняющийся со временем сайт с полезными утилитами и функциями на AutoIt
  • Desktop Icons Restorator - Скрипт-Программа для сохранения/восстановления позиции иконок р.стола.
  • CaptureIt - Утилита предназначена для захвата изображений с вашего экрана.
  • SwitchIt - Скрипт для конвертирования выделенного текста
  • Скрипт расскраски кода AutoIt для публикации в форумах
     
    Общие вопросы и решения на Autoit:
  • Обработчик скриптов добавляющий отладчик (debugger)
  • Интеракция между несколькими скриптами
  • Пример использование интеракции между скриптами - Добавление элементов GUI с внешнего модуля
  • Копирование большого файла с отображением данных прогресса
  • Создание динамического меню в Tray Icon (значёк в области уведомления)
  • Пример создания своего мастера (Wizard)
  • Метод позволяющий запускать код VBS не создавая временных файлов
  • Описание функции GUIRegisterMsg()
  • Пример перехвата вводимых символов с клавиатуры
  • Пример деактивирования TabItem
  • Пример вывода лога в Edit-поле (с поддержкой форматирования текста)
  • Пример остановки/начало выполнения скрипта + Слежение за б.обмена с заменой неподдерживаемых в имени файла символов
  • Пример использования меню с иконками (ModernMenu.au3) -> Список программ в меню значка в системном трее
     
  • Как по PID процесса вычислить путь запускаемого файла
  • Получение IP по подключенному сокету
     
    Отдельные функции (UDF):
  • Функции Отключения/Подключения к Интернету
  • Функция проверки подключения к Интернету
  • Функция для получения структуры директории включая подкаталоги
  • Функция для поиска в файлах
  • Функция для смены разрешения экрана
  • Функция для смены раскладки клавиатуры в определённом окне
  • Функция для получения списка процессов с допол. инфой (путь к исполняемому файлу и др.)
  • Функции и пример для отображения детального процесса закачки файла
  • Функция (и пример использования) для отображения стильного диалога “О Программе” - [Усовершенствованная версия]
  • Функция возвращает пронумерованный список всех классов определённого окна + функция получения хендлов для этих классов
  • Функция для получения заголовка окна (или его идентификатора) по ID процесса (PID)
  • Функция _StringIsUTF8Format() + _StringToUTF() - Первая проверяет если строка содержится в UTF-8 формате, вторая преобразовывает строку в UTF-8 формат
  • Функция _FileOpenDialogEx - Возвращает массив (или строку) с полными путями к выбранным файлам
  • _AU3_Lib* Функции - Предназначены для обработки подключаемых библиотек через #include
  • Функция транслитерации строки
  • Расширенная библиотека для работы с реестром
     
    За шапкой следит ViSiToR  

  • Всего записей: 6 | Зарегистр. 24-11-2005 | Отправлено: 13:20 24-11-2005 | Исправлено: Maz, 11:50 17-04-2017
    Tipulatoid



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Ну Вы маг! Спасибо за скрипт по авторазмещению постов на форуме. Его надо теперь немного доработать, чтоб умел и через IE и Firefox работать. Почитаю мануалы, надеюсь справлюсь. Если что, обращусь за помощью, ОК?

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 15:48 06-12-2007
    Dobrii

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет!
    Создаю радиокнопку
    $Radio1 = GUICtrlCreateRadio("0 град.", 180, 40)  
    Текст она пишет справа от кнопки, можно ли написать текст сверху(снизу,слева) от кнопки?
    Заранее благодарю.

    Всего записей: 137 | Зарегистр. 15-03-2006 | Отправлено: 16:16 06-12-2007
    Maza Faka



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

    Код:
    #include <GuiConstants.au3>
     
    $GUI = GUICreate("TestGui", 200, 100)
     
    $Label = GUICtrlCreateLabel("0 град.", 10, 35, 100, 17)
    GUICtrlSetColor(-1, 0x804040)
     
    $Radio_Btn = GUICtrlCreateRadio("", 20, 50, 50, 20)
     
    GUISetState()
     
    While 1
        $msg = GUIGetMsg()
        Switch $msg
        Case $GUI_EVENT_CLOSE
            ExitLoop
        EndSwitch
    WEnd

     
    Добавлено:
    Baloven1

    Цитата:
    DllStructGetData($tInfo, "VKey") = 22020136 Or DllStructGetData($tInfo, "VKey") = 21495846

    Хей! Откуда такая инфа? Ну-ка поделись!
    Откуда взяты эти константы?
    Цитата:
    Local $tInfo = DllStructCreate($tagNMLVKEYDOWN, $ilParam)

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 17:05 06-12-2007
    ViSiToR



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

    Цитата:
    Если что, обращусь за помощью, ОК?

    ОК
     
    Dobrii

    Цитата:
    можно ли написать текст сверху(снизу,слева) от кнопки?

    Только через собственный Label и массивы..
     

    Код:
    #include <GuiConstants.au3>
     
    $Gui = GuiCreate("Test")
     
    $Radio_1 = _GUICtrlCreateRadio("My Custom Radio at the Right", "Right", 20, 30)
    $Radio_2 = _GUICtrlCreateRadio("My Custom Radio at the Buttom", "Buttom", 20, 80)
    $Radio_3 = _GUICtrlCreateRadio("My Custom Radio at the Left", "Left", 20, 150, 150)
    $Radio_4 = _GUICtrlCreateRadio("My Custom Radio at the top", "Top", 20, 200)
     
    GUISetState()
     
    While 1
        $Msg = GUIGetMsg()
        Switch $Msg
            Case -3
                Exit
            Case
    $Radio_1[1]
                ControlClick($Gui, "", $Radio_1[0])
            Case $Radio_2[1]
                ControlClick($Gui, "", $Radio_2[0])
            Case $Radio_3[1]
                ControlClick($Gui, "", $Radio_3[0])
            Case $Radio_4[1]
                ControlClick($Gui, "", $Radio_4[0])
        EndSwitch
    WEnd
     
    Func
    _GUICtrlCreateRadio($Text, $sDirection, $Left, $Top, $Width=Default, $Height=Default, $Style=-1, $exStyle=-1)
        Local $RetArr[2]
        Local $rLeft = $Left, $rTop = $Top
     
        Switch $sDirection
            Case "Buttom"
                $Top += 20
            Case "Top"
                $rTop += 18
            Case "Left"
                If $Width = Default Then $Width = StringLen($Text) * (StringLen($Text) / 3) + StringLen($Text)
                $rLeft += $Width
                $Top
    += 3
            Case Else
                $Left += 22
                $Top += 3
        EndSwitch
     
        $RetArr[0] = GUICtrlCreateRadio(" ", $rLeft, $rTop, 20, 20, $Style, $exStyle)
        $RetArr[1] = GUICtrlCreateLabel($Text, $Left, $Top, $Width, $Height, $Style, $exStyle)
        Return $RetArr
    EndFunc


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 17:51 06-12-2007
    gregaz



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR,спасибо за толчок в сторону форума Autoit.com в вопросе редактирования поместу в ListView . попробую разобраться с их разработками
     
    Maza Faka

    Цитата:
    В новой версии кол-во UDF увеличилось, что не может не радовать

    По моему они просто перенесли в UDF ф-ии,которые были в LIB , изменив их синтаксис
     
    ViSiToR
    Может и правда проще выводить свое окошко EDIT и редактировать там
    Всем спасибо
     
     

    Всего записей: 79 | Зарегистр. 02-06-2007 | Отправлено: 18:35 06-12-2007 | Исправлено: gregaz, 18:38 06-12-2007
    Maza Faka



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

    Цитата:
    в вопросе редактирования поместу в ListView

    Если поставил новую версию, то какие проблемы с редактированием? В справке есть примеры.

    Цитата:
    По моему они просто перенесли в UDF ф-ии,которые были в LIB , изменив их синтаксис

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

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:39 07-12-2007
    Baloven1

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    _GUICtrlListViewGetCurSel() - есть такая и зовется она нынче _GUICtrlListView_GetNextItem($hWnd[, $iStart = -1[, $iSearch = 0[, $iState = 8]]])
    (выше на прошлой странице приводил сопоставление старых новым функциям), но при ее использовании абсолютно то же самое...
    я уж было подумал, какой-то глюк на компе... попробовал на другом - то же самое т.е. получается "запаздывание фокуса"

    Всего записей: 186 | Зарегистр. 16-09-2004 | Отправлено: 09:35 07-12-2007
    Maza Faka



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

    Цитата:
    т.е. получается "запаздывание фокуса"

    Видимо событие обрабатывается как при нажатии на элемент Button, т.е. если мы нажимаем кнопку, то она срабатывает не сразу, а только после того, как мы её отпустим, соответсвенно нужно найти способ при котором событие будет происходить при установке фокуса на элемент и считывание именно этого элемента.
     
    P.S.
    Ты не ответил на мои вопросы

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 10:03 07-12-2007
    Baloven1

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    я то это понял, но вот как отследит окончание действия, то бишь нажатие-отпускание...??? и только потом обчитать фокус? - вот это мне и не понятно... я же и обчитываю по событию $tagNMLVKEYDOWN то есть можно по названию предположить что именно когда клавиша нажата, НО нет константы что она опущена
    насчет констант (извини что-то пропустил их ): читай на предыдущей страницы мои посты
    ладно... я в основном все что написал на 2х страницах - это разбор примера @ProgramFiles\AutoIt3\Examples\_GUICtrlListView_GetHotItem.au3
    а уже от него плясал в файлы с константами, которые подгружаются в начале файла, те что были непонятны выловил поиском по тексту в папке @ProgramFiles\AutoIt3\Include\ (могу ошибаться но по мойму они определены в ... в общем поискал щас константа $LVN_KEYDOWN находится в файлах ListViewConstants.au3 и StructureConstants.au3)
    а что касается фильтрации по кодам клавишь - так все простозапустил указанный выше пример и он при выполнении событий все пишет в консоль - там и посмотрел, НО пишет при нажатии клавиши, и при отпускании ничего нет
     
    Добавлено:
    Tipulatoid
    ViSiToR
    Полный оффтопик (сорри)...
    а что если его (скрипт раскраски постов) доработать и приклеить в код формы? так сделано на форуме AI там есть дополнительный код [autoit][/autoit] (если мне память не изменяет) естественно что на борде пишут не только на AI но ведь теоретически можно подобным образом сделать коды и раскраску и под остальные языки, весь вопрос в реализации кодов (их группировки)... и я в этом не шибко силен

    Всего записей: 186 | Зарегистр. 16-09-2004 | Отправлено: 12:28 07-12-2007
    Tipulatoid



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я с легкой руки ViSiToR решил изучать AutoIt, ибо он крут. Разрешите несколько вопросов ньюба:
    1. С помощью какого элемента Gui можно нарисовать информационую панель, куда скрипт будет выводить сообщения о том, чем он в данный момент занимается?
     
    2. Можно попросить вас набросать пример создания мастера (wizard)? Т.е. 2-3 связанных между собой диалога, с кнопками "Назад" "Далее" "Отмена", чтоб при нажати Назад диалог отображал уже введеную в него инфу. Хочу посмотреть как грамотно это делать.
     
    3. Как раскрыть переменную, заключенную в кавычки?
    Например, мне нужно запустить консольную утилиту zip.exe и передать ей 2 параметра - имя архива (обязательно в переменной) и файл(ы) для добавления в архив

    Код:
    $arch_name = "test"
    Run("zip.exe $arch_name pop3recv.exe")
     

    Приводит к созданию архива $arch_name.zip Нужно получить test.zip

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 13:53 07-12-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как при помощи StringRegExpReplace преобразовать строку вида: "\\ws1\c\folder\test\scite" в строку: "c:\folder\test\scite" ?

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 13:58 07-12-2007
    gen4gen



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR, так вот, каким образом можно закрыть процесс? Именно закрыть, имитировав нажатие Alt+F4 или пункта меню Exit, а не просто убить? Чтобы соответственно, если это Notepad.exe например, и в нем есть не сохраненный текст,  блокнот выдал подтверждение сохранить или нет. И как быть с приложениями, которые спрятаны в трее? Например, qip, RoboForm, WinAmp и пр.
     

    Всего записей: 671 | Зарегистр. 19-11-2004 | Отправлено: 17:05 07-12-2007
    gregaz



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

    Цитата:
    Если поставил новую версию, то какие проблемы с редактированием? В справке есть примеры

    Я вернулся на старую-причин много
    В новой примеры работают при создании ListYiew через UDF
    Мне хотелось использовать более простой в управлении и с большими возможностями ListView ,созданный без UDF
    Просьбу выставлял,не предполагая,что это достаточно сложно
    Кстати версии (новая и старая)работают и без инсталяции (вернее без деинсталяции с разнесением в разные папки),хотя может где-то и откажут
    В связи с этим вопрос : как грамотно выполнить оперативную передачу управления на запуск Autoit-овского файла с одного ехе файла на другой  (с нового на старый и назад) ?
    Версии в разных папках.
    Наверное внести измения в системное меню контекста ?
    Может подскажет кто. Я- не силен

    Всего записей: 79 | Зарегистр. 02-06-2007 | Отправлено: 19:39 07-12-2007
    ViSiToR



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

    Цитата:
    а что если его (скрипт раскраски постов) доработать и приклеить в код формы?

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

    Цитата:
     С помощью какого элемента Gui можно нарисовать информационую панель

    Можно _GuiCtrlStatusBarCreate(), но чтобы попроще, можно тот же Label...
     

    Код:
    #include <GuiConstants.au3>
     
    $Gui = GuiCreate("Test", 300, 140)
     
    $SetData = GUICtrlCreateButton("Set Data", 20, 20)
     
    $StatusBar_Label = GUICtrlCreateLabel("", 0, 122, 300, 20, $SS_SIMPLE+$SS_SUNKEN)
     
    GUISetState()
     
    While 1
        $Msg = GUIGetMsg()
        Switch $Msg
            Case -3
                Exit
            Case
    $SetData
                GUICtrlSetData($StatusBar_Label, "Test")
        EndSwitch
    WEnd

     
     

    Цитата:
    Можно попросить вас набросать пример создания мастера (wizard)?

    У меня уже есть такой:
     
    Подробнее...
     

    Цитата:
     Как раскрыть переменную, заключенную в кавычки?

    Либо использовать Opt("ExpandVarStrings", 1) (тогда саму переменную использовать так: $Var$), либо выводить переменную через амперсанды ( & ):
     

    Код:
    $arch_name = "test"  
    Run("zip.exe " & $arch_name & " pop3recv.exe")

     
     
    Maza Faka

    Цитата:
    Как при помощи StringRegExpReplace преобразовать строку вида: "\\ws1\c\folder\test\scite" в строку: "c:\folder\test\scite" ?

     
    Примерно так:
     

    Код:
    $String = "\\ws1\c\folder\test\scite"
    ConsoleWrite(StringRegExpReplace($String, "\A\\\\.*?\\(.*?)\\", "\1:\\"))

     
    gen4gen

    Цитата:
     каким образом можно закрыть процесс?

    Если у процесса есть окно, то нужно его вычеслить для начала...
     
    Подробнее

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 20:17 07-12-2007
    Baloven1

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gregaz
    могу ошибаться, но попробуй передачу организовать через запуск скрипта подобно тому как ты бы его запустил из командной строки...
    т.е. @ProgramFiles\AutoIt3Old\AutoIt3.exe test.au3
    @ProgramFiles\AutoIt3NEW\AutoIt3.exe test1.au3
    при таком раскладе запуск частей (имхо) нужно будет выполнять через внешний скрипт или bat-(cmd кому что нравится) файлы и организацию передачи переменных наверно только через файл или иное хранилище не имеющее отношения к AI... все это имхо и возможно работать и не будет, но вроде как должно заработать....
    да кстати, возможно что прийдется и в #include прописывать полный путь к папке, дабы AI работающий в текущий момент брал только свои, а не от другой версии
     
    Добавлено:
    и кстати... ведь можно же из SciTE запустить обработчик (компиляцию, проверку синтаксиса, запуск  и пр.) релиза или бета версии лежащей в подкаталоге @ProgramFiles\AutoIt3\Beta\
     
    Добавлено:
    gregaz
    хм... очень интересную инфу обнаружил в справке (!!! ) для себя (в английской справке раздел "Running Scripts"
    цитата:

    Цитата:
    So if your script is run like this:
        AutoIt3.exe myscript.au3 param1 "this is another param"
    $CmdLine[0] equals... 2
    $CmdLine[1] equals... param1
    $CmdLine[2] equals... this is another param
    @ScriptName equals... myscript.au3
     

    и далее:

    Цитата:
    Note : only 63 parameters can be return by $CmdLine[...], but $CmdLineRaw will always returns the entire command line.
     

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

    Всего записей: 186 | Зарегистр. 16-09-2004 | Отправлено: 05:30 08-12-2007
    gregaz



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

    Цитата:
    т.е. исходя из полученной инфы можно сделать вывод, что (опять же имхо): в теории можно написать один скрипт который будет ...запускать на той версии, под которую он написан)  

     
    Вопрос : как  лучше идентифицировать версию AI ?
     
     
     
     

    Всего записей: 79 | Зарегистр. 02-06-2007 | Отправлено: 01:03 09-12-2007
    ViSiToR



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

    Цитата:
    как  лучше идентифицировать версию AI ?

     

    Код:
     
    MsgBox(64, "Info", "AutoIt Version Is: " & GetAutoItVersion())
     
    Func GetAutoItVersion()
        Local $Au3_Path = StringRegExpReplace(@AutoItExe, '\\[^\\]+$', '') & "\AutoIt3.exe"
        If @Compiled Then $Au3_Path = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt", "InstallDir") & "\AutoIt3.exe"
     
        If FileExists($Au3_Path) Then Return FileGetVersion($Au3_Path)
     
        $Au3_Path = @ProgramFilesDir & "\AutoIt3\AutoIt3.exe"
        If FileExists($Au3_Path) Then Return FileGetVersion($Au3_Path)
     
        $Au3_Path = @ScriptDir & "\AutoIt3"
        If FileExists($Au3_Path) Then Return FileGetVersion($Au3_Path)
     
        Return "Unknown"
    EndFunc


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 01:20 09-12-2007
    Tipulatoid



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

    Код:
    $GroupGui_2_6 = GUICtrlCreateGroup("", 20, 210, 350, 43)
    $LabelGui_2_6_1 = GUICtrlCreateLabel("Введите количество периодов (от 1 до 20):", 30, 222, 220, 17)
    $InputGui_2_6_1 = GUICtrlCreateInput("12", 1, 1, 1, 1)
    $UpDownGui_2_6_1 = GUICtrlCreateUpdown($InputGui_2_6_1)
    GUICtrlSetPos($InputGui_2_6_1, 250, 220, 40, 17 )
    GUICtrlCreateGroup("", -99, -99, 1, 1)

     
    Получаю счетчик, где цифры бегают от минус до плюс бесконечности. Как ограничить диапазон от 1 до 20?

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 04:09 09-12-2007
    gregaz



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR,спасибо
     
    Baloven1
    Я пошел другим ( может быть варварским, дилетантским), но простым путем :
    Переименовал екзешник новой версии в AutoIt3.exe в AutoIt31.exe,а скрипты создаваемые в новой версии в *.au31.
    Все работает вроде бы и иконки скриптов *.au3 и *.au31 отличаются
     
      Тем самым я убедился в возможности параллельного функционирования обеих версий ,а дальше можно и выполнить все более грамотно.Позже ведь все равно придется уходить из старой версии
     
     

    Всего записей: 79 | Зарегистр. 02-06-2007 | Отправлено: 06:04 09-12-2007 | Исправлено: gregaz, 06:36 09-12-2007
    Baloven1

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Tipulatoid
    Открываем кошелку.... ой сорри... справку
    и смотрим ее по функции GUICtrlCreateUpdown читаем ее, читаем и натыкаемся на раздел... "Remarks"

    Цитата:
    Max and min value can be set with GUICtrlSetLimit.
    By default Windows increases the value when clicking the upper arrow button.
    Default height resizing is done according to the one of the related input control.
     

    кликаем на ниперссылку GUICtrlSetLimit и открывается нашему взору вот это:

    Цитата:
    GUICtrlSetLimit  
    --------------------------------------------------------------------------------
    Limits the number of characters/pixels for a control.
    GUICtrlSetLimit ( controlID, max [, min] )
    Parameters
    controlID        The control identifier (controlID) as returned by a GUICtrlCreate... function.  
    max         For List controls it is the extent you can scroll horizontally in pixels.  
    For Input/Edit controls it is the max number of characters that can be entered.  
    min [optional]     For Slider and UpDown controls you can specify a min value. Default = 0  
     

    т.е. добавь строку:
    GUICtrlSetLimit ($UpDownGui_2_6_1, 20, 1)
     
    Добавлено:
    PS синтаксис действителен и для новой и для старых версий...
     
    примерно вот так должно получится

    Код:
    #include <GuiConstants.au3> ;#include <GuiConstantsEx.au3> - для новой версии привел их для примера что можно с самой формой делалть и как...
    #include <GuiListView.au3>
     
    $Forms = GUICreate("Форма", 400, 400, 100, 100, BitOR($WS_MAXIMIZEBOX,$WS_MINIMIZEBOX,$WS_SIZEBOX, _
        $WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_OVERLAPPEDWINDOW,$WS_TILEDWINDOW,$WS_POPUP,$WS_POPUPWINDOW, _
        $WS_GROUP,$WS_TABSTOP,$WS_BORDER,$WS_CLIPSIBLINGS)) ;стили назначил для примера
    GUISetState(@SW_SHOW) ;отобразить окно
     
    $GroupGui_2_6 = GUICtrlCreateGroup("", 20, 210, 350, 43)
    $LabelGui_2_6_1 = GUICtrlCreateLabel("Введите количество периодов (от 1 до 20):", 30, 222, 220, 17)
    $InputGui_2_6_1 = GUICtrlCreateInput("12", 1, 1, 1, 1) ;зачем перемещать control? его можно сразу в нужные координаты постовить вот так $InputGui_2_6_1 = GUICtrlCreateInput("12", 250, 220, 40, 17)
    $UpDownGui_2_6_1 = GUICtrlCreateUpdown($InputGui_2_6_1)
    GUICtrlSetPos($InputGui_2_6_1, 250, 220, 40, 17 )
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlSetLimit($UpDownGui_2_6_1, 20, 1)
     
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                        Exit
        EndSwitch
    WEnd

     
    Добавлено:
    Tipulatoid
    и еще парочка не знаю советов что ли
    группе контролов можно а иногда и нужно название дать, дабы юзер знал что это за группа применительно к коду выше будет выглядеть вот так:

    Код:
    $GroupGui_2_6 = GUICtrlCreateGroup("Название группы Control's", 20, 210, 350, 43)

    ну и разумеется строку
    Код:
    $InputGui_2_6_1 = GUICtrlCreateInput("12", 1, 1, 1, 1)
    заменить на
    Код:
    $InputGui_2_6_1 = GUICtrlCreateInput("12", 250, 220, 40, 17)
    , а строку GUICtrlSetPos($InputGui_2_6_1, 250, 220, 40, 17 ) вообще убрать...
    может я и не прав, но при большом количестве контролов (например я сейчас по сути делаю клиента для подключения к БД SQL в замен стандартного нифига не работающего и у меня уже порядка 200 их и перерисовываются они заметно, т.е. видно их перерисовку

    Всего записей: 186 | Зарегистр. 16-09-2004 | Отправлено: 06:41 09-12-2007 | Исправлено: Baloven1, 07:35 09-12-2007
       

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

    Компьютерный форум Ru.Board » Компьютеры » Программы » Закладки » AutoIT (Часть 1)
    Widok (12-01-2009 14:47): лимит страниц. продолжаем здесь


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru