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

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

Global $hAVI

_Example_Internal()
_Example_External()

Func _Example_Internal()
	Local $btn_start, $btn_stop

	; Создаёт GUI
	GUICreate("Воспроизводит AVI", 300, 200)
	$hAVI = GUICtrlCreateAvi (@SystemDir & "\shell32.dll",160, 10,10)
	$btn_start = GUICtrlCreateButton ("Старт",50,150,70,22)
	$btn_stop  = GUICtrlCreateButton ("Стоп",150,150,70,22)
	GUISetState()

	; Цикл выполняется, пока окно не будет закрыто
	While 1
		Switch GUIGetMsg()
			Case $GUI_EVENT_CLOSE
				ExitLoop
			Case $btn_start
				; Воспроизводит клип AVI
				_GUICtrlAVI_Play($hAVI)
			Case $btn_stop
				; Останавливает воспроизведение клипа
				_GUICtrlAVI_Stop($hAVI)
		EndSwitch
	WEnd

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

	GUIDelete()
EndFunc   ;==>_Main

Func _Example_External()
	Local $hGUI, $btn_start, $btn_stop

	; Создаёт GUI
	$hGUI = GUICreate("(UDF) Воспроизводит AVI", 300, 200)
	$hAVI = _GUICtrlAVI_Create ($hGUI, @SystemDir & "\Shell32.dll", 160, 10, 10)
	$btn_start = GUICtrlCreateButton ("Старт",50,150,70,22)
	$btn_stop  = GUICtrlCreateButton ("Стоп",150,150,70,22)
	GUISetState()

	; Цикл выполняется, пока окно не будет закрыто
	While 1
		Switch GUIGetMsg()
			Case $GUI_EVENT_CLOSE
				ExitLoop
			Case $btn_start
				; Воспроизводит клип AVI
				_GUICtrlAVI_Play($hAVI)
			Case $btn_stop
				; Останавливает воспроизведение клипа
				_GUICtrlAVI_Stop($hAVI)
		EndSwitch
	WEnd

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

	GUIDelete()
EndFunc   ;==>_Main