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

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

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

gyra (23-01-2020 10:51): AutoIT (Часть 4)  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

AZJIO



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
#include "SoundGetSetQuery.au3"
#include "ListViewConstants.au3"
#include <GuiListView.au3>
; #include <Array.au3>
$aM=_SoundQuery1()
; _ArrayDisplay( $a, "Информация о регуляторах в микшере" )
    GUICreate("SoundQuery Results", 300, 550)
$hListView = GUICtrlCreateListView("MixerID|ComponentType|CompInst", 10, 10, 280, 530, $LVS_NOCOLUMNHEADER, $LVS_EX_CHECKBOXES)
GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_TRACKSELECT, $LVS_EX_TRACKSELECT)
    
For $i = 1 to $aM[0][0]
    $aM[$i][3]=GUICtrlCreateListViewItem($aM[$i][0] & "|" & $aM[$i][1]  & "|" & $aM[$i][2], $hListView)
    If _SoundGetDeviceMute($aM[$i][0],$aM[$i][1],$aM[$i][2])=1 Then GUICtrlSetState(-1,1)
Next
 
GUISetState ()
While 1
   $msg = GUIGetMsg()
For $i = 1 to $aM[0][0]
    If $msg = $aM[$i][3] Then
        If _GUICtrlListView_GetItemChecked($hListView,ControlListView("SoundQuery Results", "", "SysListView321", "GetSelected"))=1 Then
            _GUICtrlListView_SetItemChecked($hListView,ControlListView("SoundQuery Results", "", "SysListView321", "GetSelected"), False)
            _SoundSetDeviceMute($aM[$i][0],$aM[$i][1],$aM[$i][2],0)
        Else
            _GUICtrlListView_SetItemChecked($hListView,ControlListView("SoundQuery Results", "", "SysListView321", "GetSelected"), True)
            _SoundSetDeviceMute($aM[$i][0],$aM[$i][1],$aM[$i][2],1)
        EndIf
    EndIf
Next
   Select
       Case $msg = -3
           Exit
   EndSelect
WEnd
 
Func _SoundSetDeviceMute($1,$2,$3,$fMute)
    Local $iRet = SoundSetGet($1, $2, $3, "Mute", True, $fMute)
    SetError(@error)  
    Return $iRet
EndFunc
 
Func _SoundGetDeviceMute($1,$2,$3)
    Local $iRet = SoundSetGet($1, $2, $3, "Mute", False, 0)
    SetError(@error)  
    Return $iRet
EndFunc
 
Func _SoundQuery1()
    SplashTextOn("Процесс", "Опрос звуковых параметров микшера системы...", 400, 50, -1, -1, 48)
    
     Local $aM[1][5]
    $st=0
    
    ; Цикл поиска существующих регуляторов.
    Local $iMixer = 0
    While True
        _SoundGet($iMixer, "dSpeakers", 1, "Volume")
        If @error = 5 Then ExitLoop ; Больше регуляторов не существует. Любая другая ошибка указывает что регулятор существует.
 
        ; Проверить тип в текущем регуляторе.
        Local $iComponentType = 0
        While $iComponentType < UBound($asComponentTypes)
            _SoundGet($iMixer, $asComponentTypes[$iComponentType], 1, "Volume")
            If @error = 6 Then
                ; Этот тип компонента не существует в данном регуляторе.
                ; Начните с новой итерации, чтобы переходить на следующий компонентный тип.
                $iComponentType +=1
                ContinueLoop
            EndIf
 
            ; Проверить instance в текущем типе.
            Local $iComponentInstance = 1
            While True
                _SoundGet($iMixer, $asComponentTypes[$iComponentType], $iComponentInstance, "Volume")
                If @error = 7 Then ExitLoop ; Нет болше instances в этом типе компонента.
 
                ; Получите текущую величину каждого управляющего типа, который существует в данном случае этого компонента.
                Local $iControlType = 0
                While $iControlType < UBound($asControlTypes)
                    If $asControlTypes[$iControlType]<>'Mute' Then
                        $iControlType +=1
                        ContinueLoop
                    Else
                        ; $iMixer - 0,2 инпут, аут.
                        ;asComponentTypes - sAnalog
                        ;iComponentInstance - номер регулятора в компоненте  
                        $st+=1
                        ReDim $aM[$st+1][5]
                        $aM[$st][0]=$iMixer
                        $aM[$st][1]=$asComponentTypes[$iComponentType]
                        $aM[$st][2]=$iComponentInstance
                    EndIf
                    $iControlType +=1
                WEnd ; Для каждого управляющего типа.
 
                $iComponentInstance +=1
            WEnd ; Для каждого компонента instance.
 
            $iComponentType +=1
        WEnd ; Для каждого типа компонента.
 
        $iMixer = $iMixer + 1
    WEnd ; Для каждого регулятора
    
    SplashOff()
    $aM[0][0]=$st
    Return $aM
EndFunc   ;==>_SoundQuery

Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 00:12 01-10-2010 | Исправлено: AZJIO, 21:00 03-10-2010
   

На первую страницук этому сообщениюк последнему сообщению

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