#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <WindowsConstants.au3>
#include <ScrollBarConstants.au3>

Global $k = 0
GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
$GUI = GUICreate("Вертикальный", 350, 250, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_VSCROLL))

$slider1 = GUICtrlCreateSlider(15, 20, 30, 200, $TBS_VERT)
GUICtrlSetLimit(-1, 185, 0)
$hSlider_Handle1 = GUICtrlGetHandle(-1)

$slider2 = GUICtrlCreateSlider(55, 20, 30, 200, $TBS_VERT)
GUICtrlSetLimit(-1, 185, 0)
$hSlider_Handle2 = GUICtrlGetHandle(-1)

GUICtrlCreateLabel('     WM_VSCROLL - сообщение позволяет получить величину регулятора в момент его использования, а не зацикливать проверку состояния.' & @LF & @LF & '     Если вертикальных регуляторов более одного, то функция срабатывает при задействовании любого из вертикальных регуляторов, а также при использовании полосы прокрутки.', 100, 10, 245, 180)
$condition = GUICtrlCreateLabel('', 100, 170, 245, 70)
GUISetState()

Do
Until GUIGetMsg() = -3

Func WM_VSCROLL($hWnd, $Msg, $wParam, $lParam)
	#forceref $Msg, $wParam, $lParam
	Local $nScrollCode = BitAND($wParam, 0x0000FFFF) ; _WinAPI_LoWord
	Local $value = BitShift($wParam, 16) ; _WinAPI_HiWord
	
	Switch $lParam
		Case $hSlider_Handle1
			$sMsg = 'Слайдер = 1' & @LF & 'Значение = '
			Switch $nScrollCode
				Case $SB_THUMBTRACK
					$sMsg &= $value & @LF & 'Метод = Удерживание левой кнопкой мыши'
				Case $SB_THUMBPOSITION
					$sMsg &= $value & @LF & 'Метод = Колёсиком мыши'
				Case $SB_LINEUP
					$value = GUICtrlRead($slider1)
					$sMsg &= $value & @LF & 'Метод = Стрелка влево/вверх'
				Case $SB_LINEDOWN
					$value = GUICtrlRead($slider1)
					$sMsg &= $value & @LF & 'Метод = Стрелка вправо/вниз'
				Case $SB_PAGEUP
					$value = GUICtrlRead($slider1)
					$sMsg &= $value & @LF & 'Метод = Клик сверху от ползунка'
				Case $SB_PAGEDOWN
					$value = GUICtrlRead($slider1)
					$sMsg &= $value & @LF & 'Метод = Клик снизу от ползунка'
			EndSwitch
			If $nScrollCode <> 8 Then GUICtrlSetData($condition, $sMsg)
			WinSetTrans($GUI, "", 255 - GUICtrlRead($slider1))
		Case $hSlider_Handle2
			If $nScrollCode = $SB_THUMBTRACK Then GUICtrlSetData($condition, '2 - ' & $value)
		Case 0
			If $nScrollCode = $SB_THUMBTRACK Then GUICtrlSetData($condition, '3 - ' & $value)
	EndSwitch
	
	$k += 1
	WinSetTitle($GUI, '', 'Вызов ' & $k & ' раз, c=' & $nScrollCode & ', v=' & $value)

	Return $GUI_RUNDEFMSG
EndFunc