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

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



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

    Всего записей: 3265 | Зарегистр. 30-05-2007 | Отправлено: 11:20 20-09-2010
    monsoon



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

    Цитата:
    вот готовая утилита - Volume Control v0.3 с исходником в комплекте.  
    Добавил Mute, темы, настройки в ini.

    Супер! Меня как раз когда-то спрашивали о такой утилите.
    Можно ли добавить выбор хоткея на отключение/включение звука (Mute)?

    Всего записей: 1255 | Зарегистр. 30-01-2003 | Отправлено: 11:47 20-09-2010
    madmasles

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

    Цитата:
    Ну да, стиль применяется ко всем элементам и $WM_NCHITTEST к тем областям, где пощадь не заполнена элементами, а меня к элементу GUICtrlCreateGraphic не поддерживался $GUI_WS_EX_PARENTDRAG, а $WM_NCHITTEST оказался бесполезным, так как элемент GUICtrlCreateGraphic перекрывает область.

    А если сделать так:
    Код:
    ;...
    GUICtrlCreateGraphic(...)
    GUICtrlSetState(-1, $GUI_DISABLE)
    ;...
    То $WM_NCHITTEST работает.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 12:43 20-09-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    monsoon
    Принудительно можно назначить, добавив в исходник
    HotKeySet('^{PAUSE}', "_MUTE") ; Ctrl+PauseBreak
    А в настройки это как время свободное будет, и желание.

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 16:25 20-09-2010
    monsoon



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    AutoIT не изучал. Немного ковырялся в AHK.
     
    Добавлено:
    Добавил в скрипт, откомпилировал в SciTE для AutoIT. Работает.
    Спасибо!

    Всего записей: 1255 | Зарегистр. 30-01-2003 | Отправлено: 16:35 20-09-2010 | Исправлено: monsoon, 19:16 20-09-2010
    AZJIO



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

    Код:
    $GUI = GUICreate("Form1", 465, 414, 192, 124)
    $slider3 = GUICtrlCreateSlider(16, 32, 382, 45)
    ; $slider3 = GUICtrlCreateSlider(16, 32, 45, 382, 0x0002)
    GUICtrlSetLimit(-1, 185, 0)
    GUIRegisterMsg(0x0114 , "WM_HSCROLL")
    GUISetState()
     
    Do
    Until GUIGetMsg() = -3
     
    Func WM_HSCROLL()
            WinSetTrans($GUI,"",255-GUICtrlRead($slider3))
    EndFunc

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 05:55 21-09-2010
    Zloy_Gelud



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Может с этим вопросом кто поможет. Возможно ли редактирование определенной ячейки в ListView, а не только первой в строке?

    Всего записей: 3265 | Зарегистр. 30-05-2007 | Отправлено: 14:13 21-09-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 05:55 21-09-2010
    Цитата:
    Почему горизонтальный слайдер меняет прозрачность, а вертикальный с параметром 0x0002 не меняет?

    А почему с 0x0002? нужно использовать WM_VSCROLL (0x0115):
     

    Код:
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <SliderConstants.au3>
     
    $hGUI = GUICreate("Slider Update Demo", 250, 200)
     
    GUIRegisterMsg($WM_HSCROLL, "WM_HVSCROLL")
    GUIRegisterMsg($WM_VSCROLL, "WM_HVSCROLL")
     
    $Vertical_Label = GUICtrlCreateLabel("Vertical Slider Read: 255", 20, 20, 200)
    $Horizontal_Label = GUICtrlCreateLabel("Horizontal Slider Read: 255", 80, 120, 200)
     
    $Vertical_Slider = GUICtrlCreateSlider(20, 50, 30, 120, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_VERT))
    GUICtrlSetLimit(-1, 185, 0)
    $Horizontal_Slider = GUICtrlCreateSlider(60, 150, 160, 30)
    GUICtrlSetLimit(-1, 185, 0)
     
    GUISetState()
     
    While 1
        $nMsg = GUIGetMsg()
     
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
        EndSwitch
    WEnd
     
    Func WM_HVSCROLL($hWndGUI, $MsgID, $WParam, $LParam)
        Switch $LParam
            Case GUICtrlGetHandle($Vertical_Slider)
                $iRead = GUICtrlRead($Vertical_Slider)
                GUICtrlSetData($Vertical_Label, "Vertical Slider Read: " & 255-$iRead)
                WinSetTrans($hGUI, "", 255-$iRead)
            Case GUICtrlGetHandle($Horizontal_Slider)
                $iRead = GUICtrlRead($Horizontal_Slider)
                GUICtrlSetData($Horizontal_Label, "Horizontal Slider Read: " & 255-$iRead)
                WinSetTrans($hGUI, "", 255-$iRead)
        EndSwitch
    EndFunc

     
    Zloy_Gelud 14:13 21-09-2010
    Цитата:
    Возможно ли редактирование определенной ячейки в ListView, а не только первой в строке?

    Возможно.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:08 21-09-2010
    Zloy_Gelud



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

    Цитата:
    Возможно.

    Это радует. А как не подскажешь?

    Всего записей: 3265 | Зарегистр. 30-05-2007 | Отправлено: 15:15 21-09-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Zloy_Gelud 15:15 21-09-2010
    Цитата:
    как не подскажешь?

    http://www.autoitscript.com/forum/index.php?showtopic=44132
     
    Реализация конечно оставляет желать лучшего, но оно работает. Если у меня будет желание и свободное время, попробую переписать в более удобную UDF.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:54 21-09-2010
    beseda2408

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста как мне реализовать следующее. Имеется первое окно, оно закрывается по крестику (Закрыть окно). На первом окне есть кнопка, которая запускает практически такое же окно. Второе окно также должно закрываться по крестику. Но компилятор ругается на обработчик закрытия второго окна. Может кто может помочь? Строчку на которую ругается компилятор, я отметил в коде.

    Код:
     
    #include <GUIConstants.au3>
     
    ; Создаем первое окно
    Opt("GUIOnEventMode", 1)
    $MainWindow = GUICreate("Корпоративная сеть",1905,1015,4,4)
    $CreatePicture = GUICtrlCreatePic("c:\ConfigMaster\Exe\Pic\Pic1.jpg",0,0,0,0)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState (@SW_SHOW)
     
    ; Далее создаем кнопки в первом окне
    $Region = GUICtrlCreateButton ("Показать схему региона",1500,830,100,50,0x2000)
    GUICtrlSetOnEvent($Region, "Region")
     
    While 1
        Sleep(1000)
    Wend
     
    ; Обработчик закрытия окна по крестику
    GUISetOnEvent($GUI_EVENT_CLOSE, "close")
    Func close()
    Exit
    EndFunc
     
    Func Region()
       ; Создаем второе окно
       Opt("GUIOnEventMode", 1)
       $MainWindow = GUICreate("Корпоративная сеть",1905,1015,4,4)
       $CreatePicture = GUICtrlCreatePic("c:\ConfigMaster\Exe\Pic\Pic1.jpg",0,0,0,0)
       GUICtrlSetState(-1, $GUI_DISABLE)
       GUISetState (@SW_SHOW)
     
       While 1
              Sleep(1000)
       Wend
     
       ; Обработчик закрытия окна по крестику
       GUISetOnEvent($GUI_EVENT_CLOSE, "close")
       Func close() ; Компилятор ругается именно на эту строку и не дает запустить программу+++++++++++++++++++++++++
          Exit
       EndFunc
     
    EndFunc
     

    Всего записей: 5 | Зарегистр. 12-12-2008 | Отправлено: 10:10 22-09-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    beseda2408 10:10 22-09-2010
    Цитата:
    Строчку на которую ругается компилятор, я отметил в коде

    Функций нельзя вкладывать одну в другую, и тем более повторять их:
     

    Код:
    #include <GUIConstantsEx.au3>
     
    Opt("GUIOnEventMode", 1)
     
    Global $RegionWindow
     
    ; Создаем первое окно
    $MainWindow = GUICreate("Корпоративная сеть", 1905, 1015, 4, 4)
    $CreatePicture = GUICtrlCreatePic("c:\ConfigMaster\Exe\Pic\Pic1.jpg", 0, 0, 0, 0)
    GUICtrlSetState($CreatePicture, $GUI_DISABLE)
    GUISetState(@SW_SHOW)
     
    ; Далее создаем кнопки в первом окне
    $Region = GUICtrlCreateButton("Показать схему региона", 1500, 830, 100, 50, 0x2000)
    GUICtrlSetOnEvent($Region, "Region")
     
    ; Обработчик закрытия окна по крестику
    GUISetOnEvent($GUI_EVENT_CLOSE, "close")
     
    While 1
        Sleep(1000)
    WEnd
     
    Func close()
        Switch @GUI_WinHandle
            Case $MainWindow
                Exit
            Case $RegionWindow
                GUIDelete($RegionWindow)
        EndSwitch
    EndFunc   ;==>close
     
    Func Region()
        ; Создаем второе окно
        $RegionWindow = GUICreate("Корпоративная сеть", 1905, 1015, 4, 4)
        $CreatePicture = GUICtrlCreatePic("c:\ConfigMaster\Exe\Pic\Pic1.jpg", 0, 0, 0, 0)
        GUICtrlSetState($CreatePicture, $GUI_DISABLE)
        GUISetOnEvent($GUI_EVENT_CLOSE, "close")
        GUISetState(@SW_SHOW)
    EndFunc   ;==>Region


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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    monsoon
    Обновил Volume Control до версии 0.5. Горячую клавишу добавил в настройки, с возможностью выбора. И несколько мелочей поправил.

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 19:04 22-09-2010
    monsoon



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Спасибо. Непринципиально: после отключения хоткея и нажатия "Применить", отмена начинает действовать после перезапуска утилиты.

    Всего записей: 1255 | Зарегистр. 30-01-2003 | Отправлено: 13:09 23-09-2010
    AZJIO



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

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 13:49 23-09-2010
    monsoon



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Отправил в ЛС по поводу вкл/откл микрофона.
    Как предложение: возможность задействовать клавишу win при задании хоткеев.
    Благодаря подсказке, вставил команду: HotKeySet("#x", "_MUTE") ; win+x  
    Гораздо удобнее нажимать.
     

    Всего записей: 1255 | Зарегистр. 30-01-2003 | Отправлено: 14:51 23-09-2010
    AZJIO



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

    Код:
    $title='Свойства: Звуки и аудиоустройства'
    Run(@ComSpec & " /c rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0", '', @SW_HIDE)
    WinWaitActive($title)
    ControlClick($title, "", "[CLASS:Button; INSTANCE:4]")
    WinClose($title)
     
    $title1='Общая громкость'
    WinWaitActive($title1)
    WinMove($title1, "", 0, 20)
    $GuiPos = WinGetPos($title1)
    MouseClick('left', $GuiPos[0]+$GuiPos[2]-100, $GuiPos[1]+$GuiPos[3]-10)
    ;ToolTip($GuiPos[0]+$GuiPos[2]-100 &@CRLF& $GuiPos[1]+$GuiPos[3]-10, $GuiPos[0]+$GuiPos[2]-100, $GuiPos[1]+$GuiPos[3]-10)
    ControlClick($title1, "", "[CLASS:Button; INSTANCE:26]")
    $checksum = PixelChecksum(676,313, 679,316)
    If PixelChecksum(676,313, 679,316)=957099137 Then
        MsgBox(0, 'Сообщение', 'Микрофон включен')
    Else
        MsgBox(0, 'Сообщение', 'Микрофон выключен')
    EndIf
    WinClose($title1)

     
    Покопавшись в SoundGetSetQuery.au3 выполнил функцию

    Код:
    #include "SoundGetSetQuery.au3"
    #include "ListViewConstants.au3"
    $a=_SoundQuery()

    которая возвратила список регуляторов моей системы и их состояние. Оказалось sMicrophone не является регулятором громкости микрофона, зато sAnalog оказалось 13 штук под номерами 1-13. Выставил микрофон в положение 80% и снова выполнил скрипт, по данным увидел регулятор с данными около 80% и его данные добавил в функцию, примерно так:

    Код:
    #include "SoundGetSetQuery.au3"
    _SoundSetMicrophoneVolume(50)
    Func _SoundSetMicrophoneVolume($iVolume)
        Local $iRet = SoundSetGet(0, "sAnalog", 9, "Volume", True, $iVolume)
        SetError(@error)
        Return $iRet
    EndFunc

    теперь громкость устанавливается.
    С вкл/выкл микрофона аналогично, вот готовый скрипт

    Код:
    #include "SoundGetSetQuery.au3"
    _MUTE()
     
    Func _MUTE()
        $Mute=_SoundGetMicrophoneMute()
        If $Mute = 0 Then _SoundSetMicrophoneMute(1)
        If $Mute = 1 Then _SoundSetMicrophoneMute(0)
    EndFunc
     
    Func _SoundSetMicrophoneMute($fMute)
        Local $iRet = SoundSetGet(0, "sAnalog", 9, "Mute", True, $fMute)
        SetError(@error)
        Return $iRet
    EndFunc
     
    Func _SoundGetMicrophoneMute()
        Local $iRet = SoundSetGet(0, "sAnalog", 9, "Mute", False, 0)
        SetError(@error)
        Return $iRet
    EndFunc

    Жаль, что микрофон не имеет стандарной абревиатуры sMicrophone, а то бы добавил в скрипт "Volume Control".
     
    Добавлено:
    monsoon

    Цитата:
    Гораздо удобнее нажимать.  
    У меня на эту клавишу раскрывается "Password Commander", может стоить сделать выбор модификаторов (Ctrl, Alt, Shift, Win)

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 16:31 23-09-2010 | Исправлено: AZJIO, 13:35 24-09-2010
    Lovec



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как проще отличить WinXP Home от остальных WinXP?

    Всего записей: 1028 | Зарегистр. 29-10-2002 | Отправлено: 18:01 23-09-2010
    NIKZZZZ



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

    Цитата:
    Как проще отличить WinXP Home


    Код:
    MsgBox(4096,"version",RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion","ProductName"))

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 18:47 23-09-2010
    Lovec



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Вы пробовали сами? И Pro и Home пришет "Microsoft Windows XP".

    Всего записей: 1028 | Зарегистр. 29-10-2002 | Отправлено: 18:50 23-09-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 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