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


Система IP-видеонаблюдения "Линия". Скачать бесплатную демо-версию для 16 камер. НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    XpycTMD

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

    Всего записей: 120 | Зарегистр. 17-01-2006 | Отправлено: 09:41 27-09-2007
    euheny



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

    Код:
    If $CmdLine[0] = 4 Then
      If $CmdLine[1] = "dial-up" Then
        $tit1 = "Connect dial-up"
        $tit2 = "Network Connections"
        Run(@ComSpec & ' /c start "" ' & "rasphone.exe", "", @SW_HIDE)
        WinWait($tit2, "", 5)
        ControlCommand($tit2, "", "Button1", "Check", "Button")
        WinWait($tit1, "", 5)
        ControlFocus($tit1, "", "Edit1")
        ControlSend($tit1, "", "Edit1", "{DEL 11}")
        ControlCommand($tit1, "", "Edit1", "EditPaste", $CmdLine[3])
        ControlCommand($tit1, "", "Edit2", "EditPaste", $CmdLine[4])
        ControlFocus($tit1, "", "Edit3")
        ControlSend($tit1, "", "Edit3", "{DEL 11}")
        ControlCommand($tit1, "", "Edit3", "EditPaste", $CmdLine[2])
        ControlCommand($tit1, "", "Button4", "Check", "Button")
        WinWait($tit2, "", 5)
        ControlCommand($tit2, "", "Button2", "Check", "Button")
      EndIf
    EndIf
     


    Всего записей: 3893 | Зарегистр. 22-11-2006 | Отправлено: 01:11 28-09-2007
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Копирование большого файл с отображением данных прогресса:
    (Требуется библиотека DllCallBack.au3).
     

    Код:
     
    #include <DllCallBack.au3>
     
    _FileCopyEx("C:\BigFile.avi", @ScriptDir & "\BigFile.avi")
     
    Func _FileCopyEx($Source, $Dest)
        If Not FileExists($Source) Then Return SetError(1)
        ProgressOn("_FileCopyEx() Demo", "Копирование, ждите плиз...")
        $pCopyProgressRoutine = _DllCallBack("_CopyProgressRoutine", "uint64;uint64;uint64;uint64;dword;dword;ptr;ptr;ptr")
        DllCall("kernel32.dll", "int", "CopyFileExA", _
            "str", $Source, _
            "str", $Dest, _
            "ptr", $pCopyProgressRoutine, _
            "ptr", 0, _
            "int", 0, _
            "int", 0)
        _DllCallBack_Free($pCopyProgressRoutine)
        Sleep(1000)
        ProgressOff()
    EndFunc
     
    Func _CopyProgressRoutine($TotalFileSize, $TotalBytesTransferred, $StreamSize, $StreamBytesTransferred, $dwStreamNumber, $dwCallbackReason, $hSourceFile, $hDestinationFile, $lpData)
        $Precent = $TotalBytesTransferred/$TotalFileSize*100
        ProgressSet($Precent, "Проценты: " & Round($Precent, 1) & " %")
        Return 0
    EndFunc   ;==>_CopyProgressRoutine
     

     
    Эта же функция для более новых версии (3.2.10.0).

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 17:23 28-09-2007 | Исправлено: ViSiToR, 19:05 27-10-2008
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Обновил Скрипт расскраски кода AutoIt для помещения в форумы (Au3ToPst):
     
    Список изменении:
     

    Цитата:
    v1.5
    * Исправлена проблема при открытии программы из редактора SciTE - если в последний раз использовалась опция ручного ввода кода, то естественно содержимое скрипта не отображалось, теперь птичка "Ввести код вручную" не будет ставиться если была передана ком. строка.
    * Добавленна поддержка Ctrl + A (выделяет весь код в Edit поле).
    * В пункт меню редактора SciTe при интеграции теперь подключается и горячая клавиша Ctrl + K.
    * Исправлена большая загрузка ЦП при длительных колдовании курсора мышки над полем ввода кода .
    * Мелкие ошибки и недочёты поправлены.


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 10:21 29-09-2007
    Sergey_Demchuk



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Почему не работает комманда
    RunWait (@ScriptDir & "\Setup.msi /qb")
    ??
     
     
    Добавлено:
    так тоже не идет
    RunWait(@COMSPEC " /c Start Setup.msi /qb serialnumber=ххх")  
     
     
     
    Добавлено:
    Надо запустить на выполнение следующее
    setup.exe /s /v "/qb serialnumber=ххх AGREETOLICENSE=YES"

    Всего записей: 3358 | Зарегистр. 16-12-2002 | Отправлено: 22:42 29-09-2007
    iglezz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Sergey_Demchuk
    RunWait (@ComSpec & " /c " & @ScriptDir & "\setup.msi", "", @SW_HIDE)

    Всего записей: 617 | Зарегистр. 18-02-2003 | Отправлено: 23:41 29-09-2007
    Sergey_Demchuk



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    И еще вопрос
    При установке приложени устанавливаются файлы setup.msi -> EN.msi -> VBA.msi -> FontNav.msi. То есть setup.msi отрабатывает свое и передает "эстафетную палочку" дальше. Надо чтобы скрипт отслеживал выполнение каждоготиз четырех компонентов и во время выполнения каждого из них приостанавливал выполнение скрипта.
    Я думал так
     
    WinWaitActive ( "EN" )
    WinWaitClose ( "EN")
    WinWaitActive ( "VBA" )
    WinWaitClose ( "VBA" )
    WinWaitActive ( "FontNav" )
    WinWaitClose ( "FontNav" )
     
    Но слишком быстро нав. выполняется последний компонент и скрипт не успевает что ли увидеть окно "FontNav" (компонент FontNav.msi), в результате висит вечно в паузе.

    Всего записей: 3358 | Зарегистр. 16-12-2002 | Отправлено: 00:30 30-09-2007 | Исправлено: Sergey_Demchuk, 00:37 30-09-2007
    Petrik Pyatochkin



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А какая прога лучше nnCron или AutoIT? или у них разные задачи?

    Всего записей: 320 | Зарегистр. 27-08-2006 | Отправлено: 00:33 30-09-2007
    ViSiToR



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

    Цитата:
    какая прога лучше nnCron или AutoIT?

    Я не знаком сильно с nnCron, но судя по синтаксису, AutoIt более удобен - Имхо конечно.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 02:06 30-09-2007 | Исправлено: ViSiToR, 02:07 30-09-2007
    Maza Faka



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

    Код:
     
    Global $MsiArray[3] = ["EN.msi", "VBA.msi", "FontNav.msi"]
     
    For $i = 0 To UBound($MsiArray) - 1
        ShellExecuteWait(@ScriptDir &"\"& $MsiArray[$i], "", "", "", @SW_HIDE)
    Next
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:35 30-09-2007
    Sergey_Demchuk



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Maza Faka
    Нав. немного непонятно обьяснил
    Если запустить  
    setup.msi /qn, то он и так все установит, сначала сам отработает, а затем поочередно запустятся файлы  EN.msi -> VBA.msi -> FontNav.msi
    Что я делаю. Пакую все в саморасп. архив Winrar и в самом Винраре задаю запуск setup = setup.exe /qn
    Так вот винрар после отработки установщика setup.msi считает работу завершенной, и остальные 3 файла ему по барабану, он закрывается и удаляет врем. файлы, так что успевает запустится только EN.msi и то не всегда, остальных два нет. Вот поэтому нужен скрипт, чтоб заставить ВинРАР работать, пока не поставится все что надо. Запускать вручную EN.msi -> VBA.msi -> FontNav.msi не подходит, ибо если вручную запущу, то винрар то будет работать, следовательно цепочка EN.msi -> VBA.msi -> FontNav.msi будет продолжать работать и при этом будет ошибка при вызове двух msi. Может как то через процессы отследить msiexec?

    Всего записей: 3358 | Зарегистр. 16-12-2002 | Отправлено: 11:02 30-09-2007
    Sergey_Demchuk



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ограничился пока  
    WinWait ( "FontNav" )  
    WinWaitClose ( "FontNav" )
     
    Так вроде работает

    Всего записей: 3358 | Зарегистр. 16-12-2002 | Отправлено: 15:47 30-09-2007
    HATAK

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите.Есть прога в которой работает прогрэсбар\еше одно окно\.

    Код:
    >>>> Window <<<<
    Title:    ОКНО
    Class:    #32770
    Position:    897, 79
    Size:    380, 244
    Style:    0x94CC0044
    ExStyle:    0x00010100
     
    >>>> Control <<<<
    Class:    msctls_progress32
    Instance:    1
    ClassnameNN:    msctls_progress321
    ID:    1345
    Text:    Generic1
    Position:    8, 75
    Size:    357, 16
    ControlClick Coords:    184, 11
    Style:    0x50000000
    ExStyle:    0x00020004

    Кстати сейчас понял\напримег как окно архивирования в Rar\
    Можно ли както вытянуть его\прогрэсбар\ в GUI скрипта.

    Всего записей: 27 | Зарегистр. 03-02-2006 | Отправлено: 23:51 30-09-2007
    ViSiToR



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

    Цитата:
    Можно ли както вытянуть его\прогрэсбар\ в GUI скрипта.

    Не думаю, разве что если программа использует StdOutWrite...
    WinRar насколько мне известно, нет (его графическая версия).

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 03:38 01-10-2007
    euheny



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

    Цитата:
    Пакую все в саморасп. архив Winrar

    пакуй простым, и лучше 7z  

    Всего записей: 3893 | Зарегистр. 22-11-2006 | Отправлено: 08:13 01-10-2007
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Скрипт для конвертирования выделенного текста (a.k.a SwitchIt ):
    (Simple Text Switcher - Готовая программа с исходниками)

     
    Запускаем скрипт, выделяем текст в почти любом Edit поле, и жмё Ctrl ` (ё на рус. раскладке) - текст конвертится в набор символов противоположного языка (Eng - Rus) -> Если функции ConvertText как второй параметр передать 0, то всегда будет конвертировать в  Русский, если 1 то в Английский (-1 в противоположный).
     

    Код:
    #NoTrayIcon
    HotKeySet("`", "ConvertProc")
    HotKeySet("^q", "Quit")
     
    While 1
        Sleep(100)
    WEnd
     
    Func
    ConvertProc()
        Local $OldClip = ClipGet()
        ClipPut("")
        Send("^{Insert}")
        Local $SelectedText = ClipGet()
        If $SelectedText = "" Then
            HotKeySet("`")
            Send("`")
            HotKeySet("`", "ConvertProc")
            Return
        EndIf
     
        Local
    $NewClip = ConvertText($SelectedText)
     
        ClipPut($NewClip)
        Send("+{Insert}")
     
        Local $LeftJumps = GetLeftJumps($NewClip)
        Send("^+{LEFT " & $LeftJumps & "}")
     
        Send("{CTRLDOWN}")
        Send("{CTRLUP}")
     
        ClipPut($OldClip)
    EndFunc
     
    ;If $Mode = 0 Then Russian language used
    ;If $Mode = 1 Then English language used
    ;If $Mode = -1 Then String Inverted

    Func ConvertText($Text, $Mode=-1)
        Local $StringIsUpper = 0, $TextRet = ""
        Local $SplitTextArr = StringSplit($Text, "")
        Local $LettersArr = GetLettersArr()
     
        For $i = 1 To $SplitTextArr[0]
            Local $i_0 = 1, $i_1 = 0
            $StringIsUpper = 0
            If StringIsUpper($SplitTextArr[$i]) Then $StringIsUpper = 1
     
            If $Mode = 0 Or ($Mode = -1 And StringIsASCII($Text)) Then Local $i_0 = 0, $i_1 = 1
     
            For $j = 1 To $LettersArr[0][0]
                If $SplitTextArr[$i] = $LettersArr[$j][$i_0] Then
                    $SplitTextArr[$i] = $LettersArr[$j][$i_1]
                    ExitLoop
                EndIf
            Next
     
            If
    $StringIsUpper = 1 Then $SplitTextArr[$i] = StringUpper($SplitTextArr[$i])
            $TextRet &= $SplitTextArr[$i]
        Next
        Return
    $TextRet
    EndFunc
     
    Func
    GetLettersArr()
        Local $AnsiStr = "ёйцукенгшщзхъфывапролджэячсмитьбю.?"
        Local $AsciiStr = "`qwertyuiop[]asdfghjkl;'zxcvbnm,./&"
        Local $StrLenght = StringLen($AnsiStr)
     
        Local $LettersArr[$StrLenght+1][2]
     
        For $i = 1 To $StrLenght
            $LettersArr
    [$i][0] = StringMid($AsciiStr, $i, 1)
            $LettersArr[$i][1] = StringMid($AnsiStr, $i, 1)
        Next
     
        $LettersArr[0][0] = $StrLenght
     
        Return $LettersArr
    EndFunc
     
    Func
    GetLeftJumps($Text)
        StringRegExpReplace($Text, '\n', '')
        Local $Extended = @extended
     
        $Text = StringStripWS($Text, 3)
        $Text = StringRegExpReplace($Text, '\s+|\t+', ' ')
        $Text = StringRegExpReplace($Text, '~|`|!|#|%|\^|&|\*|\(|\)|-|\+|=|\{|\}|''|"|;|:|/|\\|<|>|\?|,|\[|\]|ч|Ч|ё|Ё', '|')
        $Text = StringRegExpReplace($Text, '\|+', '|')
     
        Local $WordsCountArr = StringRegExp($Text, "[\s\.:;,]*([а-яА-Яa-zA-Z0-9-_]+)[\s\.:;,]*", 3)
        StringRegExpReplace($Text, '\|', '')
        $Extended += @extended + UBound($WordsCountArr)
        Return $Extended
    EndFunc
     
    Func
    Quit()
        Exit
    EndFunc

     


     
     
    Обновился скрипт Au3ToPst 1.6
     
    Список изменении:

    Цитата:
    v1.6
  • Обновлена главная функция обработки:
           - Убраны промежуточные замены на "#", теперь этот символ можно использовать в коде;
           - Добавлено черезстрочное объединение стилей, если стиль не изменяется от строки к строке;
           - Убран из стилей жирный шрифт, опять же для уменьшения количества форматных символов.
        (Добавляется в конце обработкти).
  • Добавлена поддержка быстрого режима - если передаётся ком. строка (путь к обрабатываемому файлу), и поставлена соответствующая опция в главном Меню, то скрипт обрабатывается в тихом режиме (без GUI), обработанный код по окончанию помещается в буфер обмена.
  • Исправления и улучшения при интеграции в SciTE:
           - Значительно усовершенствован метод интеграции.
           - При повторной интеграции пункты в файле настроек (au3.properties) больше удваиваться не будут.
           - Теперь новые значения и пункты будут прописываться в любом случае.
           - Теперь при вызове программы из меню SciTE документ сразу будет сохранён.
  • Ещё одна поправка большой загрузки ЦП (в дочернем диалоге вывода результатов).
  • Поправки в некоторых элементах GUI.
  • Общие улучшения в коде.


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 13:33 01-10-2007 | Исправлено: ViSiToR, 00:24 29-12-2008
    Kauffman

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите, кто-нибудь! Никак не пойму как сделать, чтобы нельзя было щелкать по окну пока второе (дочернее) открыто. В VB есть vbModal, а в AutoIt? И ещё тоже самое с стандартными диалогами (открытие файла, сохранение, выбор цвета).

    Всего записей: 33 | Зарегистр. 02-10-2007 | Отправлено: 17:06 03-10-2007
    Maza Faka



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

    Код:
     
    #include <GUIConstants.au3>
     
    $main = GUICreate("Main_Gui", 300, 200)
    $button = GUICtrlCreateButton("Start", 10, 10, 50, 20)
    $dummy = GUICreate("Dummy_Gui", 200, 100, -1, -1, -1, -1, $main)
     
    GUISetState(@SW_SHOW, $main)
     
    While 1
        $msg = GUIGetMsg(1)
        Select
        Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $main
            ExitLoop
        Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $dummy
            GUISetState(@SW_HIDE, $dummy)
            GUISetState(@SW_ENABLE, $main)
            WinActivate($main)
        Case $msg[0] = $button
            GUISetState(@SW_DISABLE, $main)
            GUISetState(@SW_SHOW, $dummy)
        EndSelect
    WEnd
     

    Возможно есть более красивое решение...

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



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

    Цитата:
    чтобы нельзя было щелкать по окну пока второе (дочернее) открыто

    Не уверен что понял... если нужно просто диактивировать родительское окно, то Maza Faka привёл пример, правда WinActivate там лишний ...
     
     
    Просто меняем порядок @SW_ENABLE и @SW_HIDE и ничего не сворачивается:
     

    Код:
    #include <GUIConstants.au3>
     
    $main = GUICreate("Main_Gui", 300, 200)
    $button = GUICtrlCreateButton("Start", 10, 10, 50, 20)
    $dummy = GUICreate("Dummy_Gui", 200, 100, -1, -1, -1, -1, $main)
     
    GUISetState(@SW_SHOW, $main)
     
    While 1
        $msg = GUIGetMsg(1)
        Select
            Case
    $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $main
                ExitLoop
            Case
    $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $dummy
                GUISetState(@SW_ENABLE, $main)
                GUISetState(@SW_HIDE, $dummy)
            Case $msg[0] = $button
                GUISetState(@SW_DISABLE, $main)
                GUISetState(@SW_SHOW, $dummy)
        EndSelect
    WEnd

     

    Цитата:
    тоже самое с стандартными диалогами

    Для _ChooseColor/Font в последних версиях появился последний параметр Hwnd (я долго просил на оф. форуме, в конце всё же добавили ), если передать через него идентификатор от GuiCreate(), то этот диалог автоматом откроется как дочерний диалог.
     
    По поводу открытие/сохранение файла/папки, есть самопальные функции, могу позже выложить... но суть в принципе таже что и в примере выше, просто деактивировать родительское окно перед открытием дочернего.
     


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 19:35 03-10-2007
    euheny



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Может кто знает как автоматизировать работу 7zip (gui-версию) ?

    Всего записей: 3893 | Зарегистр. 22-11-2006 | Отправлено: 20:12 03-10-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.Board
    © Ru.Board 2000-2017

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru