Что нового

Выбор скриптом названия программы из списка в файле txt

OlegSmirnov

Новичок
Сообщения
52
Репутация
0
Доброго времени суток.
Помогите решить вопрос.

Имеется скрипт управления бегунками микшера громкости.
Скрипт реагирует на название той программы, которое вписано - над этим бегунком.
В данном случае - это слово "Soundtrack".
Но сейчас слово "Soundtrack"- вписано в скрипт.
И уровень громкости "50" для этого пункта - также жестко задан в скрипте.

Как скриптом - выбирать название и устанавливать уровень громкости -из списка , который написан в файле 1.txt ?
Код:
#include <GuiSlider.au3>

Run("SndVol.exe")
Global $hWnd = WinWaitActive("Микшер громкости")

$hSlider = _GetVolumeSlider("Gothic")
If Not @error Then _SetVolumeLevel($hSlider, 50)

Func _GetVolumeSlider($sName)
    Local $hStatic, $hSlider, $i = 1

    While 1
        $hStatic = ControlGetHandle($hWnd, "", "Static" & $i)
        If Not $hStatic Then Return SetError(1, 0, 0)
        If StringInStr(ControlGetText($hWnd, "", $hStatic), $sName) Then
            $hSlider = ControlGetHandle($hWnd, "", "msctls_trackbar32" & ($i + 1) / 3)
            Return SetError(0, 0, $hSlider)
        EndIf
        $i += 1
    WEnd
EndFunc   ;==>_GetVolumeSlider

Func _SetVolumeLevel($hSlider, $iLevel)
    Switch $iLevel
        Case 0
            ControlSend($hWnd, "", $hSlider, "{END}")
        Case 1 To 99
            Local $iCur = _GUICtrlSlider_GetPos($hSlider) - 100
            Local $iNeed = $iLevel + $iCur, $iPGUPDN, $iUPDN
            If Not $iNeed Then Return SetError(0, 1, 0)

            If $iNeed > 0 Then
                $iPGUPDN = Int($iNeed / 20)
                If $iPGUPDN Then ControlSend($hWnd, "", $hSlider, "{PGUP " & $iPGUPDN & "}")
                $iUPDN = $iNeed - $iPGUPDN * 20
                If $iUPDN Then ControlSend($hWnd, "", $hSlider, "{UP " & $iUPDN & "}")
            Else
                $iNeed = Abs($iNeed)
                $iPGUPDN = Int($iNeed / 20)
                If $iPGUPDN Then ControlSend($hWnd, "", $hSlider, "{PGDN " & $iPGUPDN & "}")
                $iUPDN = $iNeed - $iPGUPDN * 20
                If $iUPDN Then ControlSend($hWnd, "", $hSlider, "{DOWN " & $iUPDN & "}")
            EndIf
        Case 100
            ControlSend($hWnd, "", $hSlider, "{HOME}")
    EndSwitch
EndFunc   ;==>_SetVolumeLevel
 

Вложения

  • 1.txt
    27 байт · Просмотры: 1

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
OlegSmirnov
OffTopic:
Вы бы хоть в лс ответили спасибо за скрипт

Код:
#include <GuiSlider.au3>

Run("SndVol.exe")
Global $hWnd = WinWaitActive("Микшер громкости"), $aList, $iStart

$aList = FileReadToArray(@ScriptDir & "\1.txt")

For $i = 0 To UBound($aList) - 1
	$iStart = StringInStr($aList[$i], " ", 0, -1)
	$hSlider = _GetVolumeSlider(StringLeft($aList[$i], $iStart - 1))
	If Not @error Then _SetVolumeLevel($hSlider, Int(StringMid($aList[$i], $iStart + 1)))
Next

Func _GetVolumeSlider($sName)
    Local $hStatic, $hSlider, $i = 1

    While 1
        $hStatic = ControlGetHandle($hWnd, "", "Static" & $i)
        If Not $hStatic Then Return SetError(1, 0, 0)
        If StringInStr(ControlGetText($hWnd, "", $hStatic), $sName) Then
            $hSlider = ControlGetHandle($hWnd, "", "msctls_trackbar32" & ($i + 1) / 3)
            Return SetError(0, 0, $hSlider)
        EndIf
        $i += 1
    WEnd
EndFunc   ;==>_GetVolumeSlider

Func _SetVolumeLevel($hSlider, $iLevel)
    Switch $iLevel
        Case 0
            ControlSend($hWnd, "", $hSlider, "{END}")
        Case 1 To 99
            Local $iCur = _GUICtrlSlider_GetPos($hSlider) - 100
            Local $iNeed = $iLevel + $iCur, $iPGUPDN, $iUPDN
            If Not $iNeed Then Return SetError(0, 1, 0)

            If $iNeed > 0 Then
                $iPGUPDN = Int($iNeed / 20)
                If $iPGUPDN Then ControlSend($hWnd, "", $hSlider, "{PGUP " & $iPGUPDN & "}")
                $iUPDN = $iNeed - $iPGUPDN * 20
                If $iUPDN Then ControlSend($hWnd, "", $hSlider, "{UP " & $iUPDN & "}")
            Else
                $iNeed = Abs($iNeed)
                $iPGUPDN = Int($iNeed / 20)
                If $iPGUPDN Then ControlSend($hWnd, "", $hSlider, "{PGDN " & $iPGUPDN & "}")
                $iUPDN = $iNeed - $iPGUPDN * 20
                If $iUPDN Then ControlSend($hWnd, "", $hSlider, "{DOWN " & $iUPDN & "}")
            EndIf
        Case 100
            ControlSend($hWnd, "", $hSlider, "{HOME}")
    EndSwitch
EndFunc   ;==>_SetVolumeLevel
 
Верх