Что нового

Непрерывное изменение громкости с помощью слайдера

gloss

Ленивое кодило
Сообщения
155
Репутация
5
Использую WMPLayer.ocx для воспроизведения интернет-радио.

Не получается сделать непрерывное изменение громкости, т.е. тянешь слайдер громкость меняется.
Код:
$oWMP = ObjCreate("WMPLayer.ocx")
$oWMP.Settings.Volume = 100
$oWMP.URL = "http://lr-fm.com:8000/ambient192mp3"
$oWMP.play()
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 117, 110, 192, 124, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
$Slider1 = GUICtrlCreateSlider(8, 8, 30, 93, BitOR($GUI_SS_DEFAULT_SLIDER,$TBS_VERT,$TBS_BOTH,$TBS_NOTICKS,$TBS_ENABLESELRANGE))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Slider1
			$oWMP.Settings.Volume = GUICtrlRead($Slider1)
	EndSwitch
WEnd

Пробовал через GUIRegisterMsg отсюда, меняется 1 раз и больше не работает.
Код:
$oWMP = ObjCreate("WMPLayer.ocx")
$oWMP.Settings.Volume = 100
$oWMP.URL = "http://lr-fm.com:8000/ambient192mp3"
$oWMP.play()
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 117, 110, 192, 124, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
$Slider1 = GUICtrlCreateSlider(8, 8, 30, 93, BitOR($GUI_SS_DEFAULT_SLIDER,$TBS_VERT,$TBS_BOTH,$TBS_NOTICKS,$TBS_ENABLESELRANGE))
$Vertical_Label = GUICtrlCreateLabel("100",50, 0, 50, 16)
GUIRegisterMsg($WM_VSCROLL, "WM_HVSCROLL")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		;Case $Slider1
			;$oWMP.Settings.Volume = GUICtrlRead($Slider1)
	EndSwitch
WEnd

Func WM_HVSCROLL($hWndGUI, $MsgID, $WParam, $LParam)
    Switch $LParam
		Case GUICtrlGetHandle($Slider1)
            GUICtrlSetData($Vertical_Label, 100-GUICtrlRead($Slider1))
			$oWMP.Settings.Volume = GUICtrlSetData($Vertical_Label, 100-GUICtrlRead($Slider1))
    EndSwitch
EndFunc

И маленькая хотелка.:

Тянешь вниз - громкость уменьшается.
Тянешь вверх - громкость увеличивается.
 
Автор
G

gloss

Ленивое кодило
Сообщения
155
Репутация
5
Ответ найден.
Код:
GUIRegisterMsg($WM_HSCROLL, "WM_HVSCROLL") ;горизонтальный
GUIRegisterMsg($WM_VSCROLL, "WM_HVSCROLL") ;вертикальный

Func WM_HVSCROLL($hWndGUI, $MsgID, $WParam, $LParam)
    If $LParam = GUICtrlGetHandle($Slider1) Then $oWMP.Settings.Volume = GUICtrlRead($Slider1)
EndFunc

Остается оффтоп :whistle:
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Уверен?

На всякий случай мой вариант c хотелкой.
Код:
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
	EndSwitch
	$oWMP.Settings.Volume = 100 - GUICtrlRead($Slider1)
WEnd


;D
 
Автор
G

gloss

Ленивое кодило
Сообщения
155
Репутация
5
C2H5OH
Египетская сила! :laugh:
 
Верх