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

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

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

    Цитата:
    а если у меня на странице нужная мне форма не имеет Name?  
    там 4 формы, при просмотре их имен первые две говорят, а две оставшиеся выдают нуль.

    Попробуйте
    Код:
    ;...
    MsgBox(0, "Form Info", $oForm.id)
    ;...
    Или
    Код:
    MsgBox(0, "Form Info", $oForm.name & @LF & $oForm.id & @LF & _
            $oForm.method & @LF & $oForm.action & @LF & $oForm.title)

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 16:39 02-02-2011 | Исправлено: madmasles, 16:51 02-02-2011
    Kar1son

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    через $oForm.action я сам допер, но как после этого в этой форме сделать:
    _IEFormElementCheckboxSelect ($oForm, "checkall", "", 1, "byValue")
    не получается...

    Всего записей: 187 | Зарегистр. 23-08-2006 | Отправлено: 17:48 02-02-2011
    madmasles

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

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 18:18 02-02-2011
    Zloy_Gelud



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не подскажите, можно ли сделать так, чтобы при открытии дочернего гуи, основной плавно затемнялся и становился неактивным? И после закрытия дочернего гуи, основной гуи становился "нормальным".

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 19:26 02-02-2011
    madmasles

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

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

    Так?
    Код:
    #include <GuiConstantsEx.au3>
    #include <WinAPIEx.au3>
    #include <WindowsConstants.au3>
     
    Global $hParent_GUI, $hChild_GUI
     
    $hParent_GUI = GUICreate('Parent', 400, 400, -1, -1, -1, $WS_CLIPCHILDREN)
    $nLabel = GUICtrlCreateLabel('', 0, 0, 400, 400)
    GUICtrlSetState(-1, $GUI_HIDE)
    $nButton = GUICtrlCreateButton('Button', 100, 100, 100, 50)
    GUISetState()
     
    While 1
        $aMsg = GUIGetMsg(1)
        Switch $aMsg[1]
            Case $hParent_GUI
                Switch $aMsg[0]
                    Case $GUI_EVENT_CLOSE
                        Exit
                    Case $nButton
                        GUISetState(@SW_DISABLE, $hParent_GUI)
                        GUICtrlSetState($nLabel, $GUI_SHOW)
                        $hChild_GUI = GUICreate('Child', 200, 200, -1, -1, -1, -1, $hParent_GUI)
                        WinSetTrans($hChild_GUI, '', 35)
                        GUISetState(@SW_SHOW, $hChild_GUI)
                        For $i = 220 To 0 Step -1
                            GUICtrlSetBkColor($nLabel, '0x' & Hex(_WinAPI_RGB($i, $i, $i), 6))
                            WinSetTrans($hChild_GUI, '', 255 - $i)
                            Sleep(1)
                        Next
                EndSwitch
            Case $hChild_GUI
                Switch $aMsg[0]
                    Case $GUI_EVENT_CLOSE
                        For $i = 0 To 220
                            GUICtrlSetBkColor($nLabel, '0x' & Hex(_WinAPI_RGB($i, $i, $i), 6))
                            WinSetTrans($hChild_GUI, '', 255 - $i)
                            Sleep(1)
                        Next
                        GUICtrlSetState($nLabel, $GUI_HIDE)
                        GUISetState(@SW_ENABLE, $hParent_GUI)
                        GUIDelete($hChild_GUI)
                EndSwitch
        EndSwitch
    WEnd

    WinAPIEx.au3

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 23:53 02-02-2011
    AZJIO



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

    Код:
    #include <WindowsConstants.au3>
    $Gui = GUICreate('Окно', 400, 430, -1, -1, $WS_POPUP + $WS_THICKFRAME, $WS_EX_TOOLWINDOW+$WS_EX_TRANSPARENT)
    GUISetBkColor(0x3f3f3f)
    $Button = GUICtrlCreateButton('Проверь', 100, 140, 100, 50)
    GUISetState()
     
    While 1
        $msg = GUIGetMsg()
        Select
            Case $msg = $Button
                _MsgFile()
            Case $msg = -3
                Exit
        EndSelect
    WEnd
     
    Func _MsgFile()
        $GuiPos = WinGetPos($Gui)
        GUISetState(@SW_DISABLE, $Gui)
     
        $Gui1 = GUICreate('Сообщение', 200, 70,$GuiPos[0]+110, $GuiPos[1]+100, -1, 0x00000080,$Gui)
        GUICtrlCreateLabel('Что будем делать сейчас?', 20, 10, 180, 23)
        $EditBut=GUICtrlCreateButton('Редактор', 10, 40, 80, 22)
        $StrBut=GUICtrlCreateButton ('Калькулятор', 100, 40, 80, 22)
        GUISetState(@SW_SHOW, $Gui1)
     
        For $i = 255 to 0 step -1
            WinSetTrans($Gui,"",$i)
            ; Sleep(10)
        Next
        GUISetState(@SW_HIDE, $Gui)
     
        While 1
          $msg = GUIGetMsg()
          Select
            Case $msg = $EditBut
                Run('Notepad.exe')
            Case $msg = $StrBut
                ShellExecute('Calc.exe')
            Case $msg = -3
     
                $msg = 0
                GUISetState(@SW_ENABLE, $Gui)
                GUIDelete($Gui1)
     
                GUISetState(@SW_SHOW, $Gui)
                For $i = 0 to 255
                    WinSetTrans($Gui,"",$i)
                    ; Sleep(10)
                Next
                ExitLoop
            EndSelect
        WEnd
    EndFunc

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    к сожалению эта страница под паролями и тд. распространять которые я не могу...

    Всего записей: 187 | Зарегистр. 23-08-2006 | Отправлено: 09:01 03-02-2011
    madmasles

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

    Цитата:
    к сожалению эта страница под паролями и тд.
    Вот пример с CheckBox на этой странице:
    Код:
    #include <IE.au3>
     
    $sCheckBox = ''
    $oIE = _IECreate('http://forum.ru-board.com/topic.cgi?forum=5&topic=33902&glp')
     
    $oForms = _IEFormGetCollection($oIE)
    MsgBox(0, 'Forms Info', 'There are ' & @extended & ' forms on this page')
    For $oForm In $oForms
        ;If $oForm.name == 'postform' Then ExitLoop
        If $oForm.method == 'post' Then ExitLoop
    Next
    $oFormCollection = _IEFormElementGetCollection($oForm)
    MsgBox(0, 'FormCollection Info', 'There are ' & @extended & ' Elementes on this forms')
    For $oCheckBox In $oFormCollection
        If $oCheckBox.type == 'checkbox' Then
            Sleep(1000)
            ToolTip('CheckBox Info' & @LF & 'Name ' & $oCheckBox.name & @LF & 'ID ' & $oCheckBox.id, 0, 0)
            If $oCheckBox.name Then
                $sCheckBox = $oCheckBox.name
            Else
                $sCheckBox = $oCheckBox.id
            EndIf
            If _IEFormElementCheckBoxSelect($oForm, '', $sCheckBox, -1, 'byIndex') Then
                _IEFormElementCheckBoxSelect($oForm, '', $sCheckBox, 0, 'byIndex')
            Else
                _IEFormElementCheckBoxSelect($oForm, '', $sCheckBox, 1, 'byIndex')
            EndIf
            Sleep(1000)
            If _IEFormElementCheckBoxSelect($oForm, '', $sCheckBox, -1, 'byIndex') Then
                _IEFormElementCheckBoxSelect($oForm, '', $sCheckBox, 0, 'byIndex')
            Else
                _IEFormElementCheckBoxSelect($oForm, '', $sCheckBox, 1, 'byIndex')
            EndIf
        EndIf
    Next


    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 11:25 03-02-2011
    Kar1son

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    переделал для своей страницы
    выдает что есть 4 формы, на нужной форме говорит что есть 37 элементов и выпадает при первом же проходе(я проверял) цикла
     If $oCheckBox.type == 'checkbox' Then
    --------------------^
    requeted action with this object filed
     
     
    хотя вроде свойство type у этого чекбокса есть

    Код:
    <form target="_blank" method="get" action="/export/linksseo/">
                    <h3>Экспорт в Excel</h3>
                    <fieldset class="chck">
                        <label class="checkall"><input name="checkall" type="checkbox" /> Выбрать все</label>    
                                                    <label>
                                    <input class="export_field" type="checkbox" name="fields[prj_name]" value="prj_name"  />
                                    Проект
                                </label>
     


    Всего записей: 187 | Зарегистр. 23-08-2006 | Отправлено: 11:56 03-02-2011 | Исправлено: Kar1son, 12:03 03-02-2011
    madmasles

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

    Цитата:
    и выпадает при первом же проходе
    Значит у первого элемента нет свойства .type.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 12:50 03-02-2011
    Kar1son

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    о! спасибо!  проверил - у второго элемента уже есть это свойство.
    теперь дальше проблемы: если я автоитом ставлю нужные галочки а потом делаю _IESubmit($oForm) или $oForm.Submit, то открывается всплывающее окно и тут же закрывается. а если жать на кнопку вручную мышкой то во всплывающем окне начинается загрузка файла. что может быть тут?

    Всего записей: 187 | Зарегистр. 23-08-2006 | Отправлено: 13:04 03-02-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kar1son
    Цитата:
    а потом делаю _IESubmit($oForm) или $oForm.Submit

    Может так?
    Код:
    ;...
    For $oButton In $oFormCollection
        If $oButton.type == 'submit' And $oButton.value == 'Посмотрите что здесь' Then
            _IEAction($oButton, 'click')
        EndIf
    Next
    ;...

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 13:17 03-02-2011
    Kar1son

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

    Всего записей: 187 | Зарегистр. 23-08-2006 | Отправлено: 14:17 03-02-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kar1son
    Цитата:
    тот же эффект
    А так?
    Код:
    #include <IE.au3>
     
    $oIE = _IECreate('http://www.google.ru/')
     
    $oForms = _IEFormGetCollection($oIE)
    MsgBox(0, 'Forms Info', 'There are ' & @extended & ' forms on this page')
    For $oForm In $oForms
        If $oForm.name == 'f' Then ExitLoop
    Next
    $oFormCollection = _IEFormElementGetCollection($oForm)
    MsgBox(0, 'FormCollection Info', 'There are ' & @extended & ' Elementes on this forms')
    For $oButton In $oFormCollection
        If $oButton.type == 'submit' And $oButton.value == 'Поиск в Google' Then
            $iX = _IEPropertyGet($oButton, "screenx")
            $iY = _IEPropertyGet($oButton, "screeny")
            ExitLoop
        EndIf
    Next
    MsgBox(0, '', $iX & 'x' & $iY)
    MouseMove($iX + 5, $iY + 5)
    ;MouseClick('left', $iX + 5, $iY + 5)


    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 16:10 03-02-2011
    Kar1son

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

    Всего записей: 187 | Зарегистр. 23-08-2006 | Отправлено: 17:26 03-02-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kar1son
    Цитата:
    страница на три экрана, кнопки не видно
    Тогда не знаю...
    Может так?
    Код:
    #include <IE.au3>
     
    $oIE = _IECreate('http://forum.ru-board.com/topic.cgi?forum=5&topic=33902&glp')
     
    $oForms = _IEFormGetCollection($oIE)
    MsgBox(0, 'Forms Info', 'There are ' & @extended & ' forms on this page')
    For $oForm In $oForms
        ;If $oForm.name == 'postform' Then ExitLoop
        If $oForm.method == 'post' Then ExitLoop
    Next
    $oFormCollection = _IEFormElementGetCollection($oForm)
    MsgBox(0, 'FormCollection Info', 'There are ' & @extended & ' Elementes on this forms')
    $oFormCollection = _IEFormElementGetCollection($oForm)
    MsgBox(0, 'FormCollection Info', 'There are ' & @extended & ' Elementes on this forms')
    For $oButton In $oFormCollection
        If $oButton.type == 'submit' And $oButton.value == 'Отправить' Then
            _IEAction($oButton, 'focus')
            ExitLoop
        EndIf
    Next
    Send('{ENTER}')

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 17:34 03-02-2011 | Исправлено: madmasles, 17:46 03-02-2011
    Kar1son

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    спасибо, так пошло главное если слать пробел не работает (как и раньше окошко закрывающееся) а если ентер слать то заработало

    Всего записей: 187 | Зарегистр. 23-08-2006 | Отправлено: 17:55 03-02-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kar1son
    Цитата:
    если ентер слать то заработало
    Это хорошо, а то я начал думать, как определить координаты этой кнопки после _IEAction($oButton, 'focus') для MouseClick().
     
    PS
    Наверное, лучше
    Код:
    ;...
    Send('{ENTER}')
    ;заменить на
    ;...
    $hIE = _IEPropertyGet($oIE, 'hwnd')
    ControlSend($hIE, '', 'Internet Explorer_Server1', '{ENTER}')

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 18:27 03-02-2011 | Исправлено: madmasles, 19:02 03-02-2011
    Kar1son

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    ControlSend($hIE, '', 'Internet Explorer_Server1', '{ENTER}')
    у этой функции не такие параметры... чего-то не могу понять с какой ты ее перепутал...

    Всего записей: 187 | Зарегистр. 23-08-2006 | Отправлено: 09:09 04-02-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kar1son
    Цитата:
    у этой функции не такие параметры...  


    Проверьте: ControlSend()

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 10:10 04-02-2011
       

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