#include <GUIConstantsEx.au3>
#include <GuiAVI.au3>

$Debug_AVI = False ; Проверяет ClassName передаваемый в AVI функции. Установите True и используйте дескриптор от другого элемента, чтобы увидеть как это работает

Global $hAVI

_Example_Internal()
_Example_External()

Func _Example_Internal()
	Local $btn1, $btn2, $btn3, $Inp4, $iFrame = 0

	; Создаёт GUI
	GUICreate("Устанавливает кадр (нативный)", 300, 160)
	$hAVI = GUICtrlCreateAvi(@SystemDir & "\shell32.dll", 160, 10, 10)
	$btn1 = GUICtrlCreateButton ("Предыдущий",50,90,90,24)
	$btn2  = GUICtrlCreateButton ("Следующий",160,90,90,24)
	$btn3 = GUICtrlCreateButton("Указанный", 50, 120, 90, 24)
	$Inp4 = GUICtrlCreateInput('15', 160, 120, 60, 24)
	GUISetState()

	; Цикл выполняется, пока окно не будет закрыто
	While 1
		Switch GUIGetMsg()
			Case $GUI_EVENT_CLOSE
				ExitLoop
			Case $btn1
				; Получает предыдущий кадр
				$iFrame -= 1
				If $iFrame < 0 Then $iFrame = 30
				_GUICtrlAVI_Seek($hAVI, $iFrame)
			Case $btn2
				; Получает следующий кадр
				$iFrame += 1
				If $iFrame > 30 Then $iFrame = 0
				_GUICtrlAVI_Seek($hAVI, $iFrame)
			Case $btn3
				$iFrame = GUICtrlRead($Inp4)
				_GUICtrlAVI_Seek($hAVI, $iFrame)
		EndSwitch
	WEnd

	; Закрывает AVI
	_GUICtrlAVI_Close($hAVI)

	GUIDelete()
EndFunc   ;==>_Main

Func _Example_External()
	Local $hGUI, $btn1, $btn2, $btn3, $Inp4, $iFrame = 0

	; Создаёт GUI
	$hGUI = GUICreate("Устанавливает кадр", 300, 160)
	$hAVI = _GUICtrlAVI_Create ($hGUI, @SystemDir & "\Shell32.dll", 160, 10, 10)
	$btn1 = GUICtrlCreateButton ("Предыдущий",50,90,90,24)
	$btn2  = GUICtrlCreateButton ("Следующий",160,90,90,24)
	$btn3 = GUICtrlCreateButton("Указанный", 50, 120, 90, 24)
	$Inp4 = GUICtrlCreateInput('15', 160, 120, 60, 24)
	GUISetState()

	; Цикл выполняется, пока окно не будет закрыто
	While 1
		Switch GUIGetMsg()
			Case $GUI_EVENT_CLOSE
				ExitLoop
			Case $btn1
				; Получает предыдущий кадр
				$iFrame -= 1
				If $iFrame < 0 Then $iFrame = 30
				_GUICtrlAVI_Seek($hAVI, $iFrame)
			Case $btn2
				; Получает следующий кадр
				$iFrame += 1
				If $iFrame > 30 Then $iFrame = 0
				_GUICtrlAVI_Seek($hAVI, $iFrame)
			Case $btn3
				$iFrame = GUICtrlRead($Inp4)
				_GUICtrlAVI_Seek($hAVI, $iFrame)
		EndSwitch
	WEnd

	; Закрывает AVI
	_GUICtrlAVI_Close($hAVI)

	GUIDelete()
EndFunc   ;==>_Main