Jump to content

DirectShow


wolf9228
 Share

Recommended Posts

Link to comment
Share on other sites

  • 7 years later...
On 10/24/2012 at 3:46 AM, veronesi said:

But is there a way to mute the audio in a video?

@veronesi I need the same as you, does anyone know how to mute video using this script?

Edited by Belini
Link to comment
Share on other sites

I used this when I was playing around with it, years ago.

#include <GuiButton.au3>


$mute = GUICtrlCreateButton("Mute", 30, 30, 30, 30)


_ToggleMute()


Func _ToggleMute()
    $readButton = _GUICtrlButton_GetText($mute)
    If $readButton = "Mute" Then
        SoundSetWaveVolume(0)
        _GUICtrlButton_SetText($mute, "Unmute")
    Else
        _GUICtrlButton_SetText($mute, "Mute")
        SoundSetWaveVolume(100)
    EndIf
EndFunc

 

Link to comment
Share on other sites

@1957classic this way will not work for me because I only need to silence the video and this way you posted I will silence other sounds too.

Link to comment
Share on other sites

If this player had volume control I would set the volume to zero but there is no way to change the volume nor the mute function.

Link to comment
Share on other sites

Controlling the sound through the speaker icon I can get both master volume and wave volume but what I really need is to control video volume only.

Link to comment
Share on other sites

  • 2 weeks later...

I searched a lot and found nothing to create the MUTE function or VOLUME function and without having control over the sound of the video I can not use this UDF, could anyone implement volume or mute this UDF?

Link to comment
Share on other sites

  • 1 month later...

Does anyone know what is the Virtual Method Number to change the aspect ratio of video using Ole32.dll?

Edited by Belini
Link to comment
Share on other sites

Consegui colocar Mute e Volume neste que usa a Ole32.dll e agora já dá prá incluir ele na minha lista de players também.

Func IMediaControl_Mute(ByRef $IGraphBuilder, $opt = 0)
    If $opt = 0 Then
        IMediaControl_Vol($IGraphBuilder, $volume)
    Else
        IMediaControl_Vol($IGraphBuilder, 0)
    EndIf
    GUICtrlSetData($lab_mute, "Mute: " & $opt)
EndFunc   ;==>IMediaControl_Mute

Func IMediaControl_Vol(ByRef $IGraphBuilder, $vol = 50)
    $IMediaControl = GetIMediaControl($IGraphBuilder)
    If @error Then Return SetError(1, 0, False)
    ;-------IMediaControl Vol Virtual Method Number Is 46;----------------
    $Rt = InterfaceCall($IMediaControl, "long", 46, "long", -Exp((100 - $vol) / 10.86))
    ;-------IMediaControl Vol Virtual Method Number Is 46;----------------
    GUICtrlSetData($lab_vol, "Vol: " & $vol)
    If @error Or $Rt[0] <> 1 Then
        CtrlGraphRelease($IMediaControl)
        Return SetError(2, 0, False)
    EndIf
    Return SetError(0, 0, True)
EndFunc   ;==>IMediaControl_Vol
#include <Array.au3>
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>


Global $CoInitialize = False, $Ole32 = DllOpen("Ole32.dll"), $MsgGraphArray = 0, $StartGraph = 0
Const $WM_GRAPHNOTIFY = $WM_APP + 1

$hGui = GUICreate("DirectShow", 608, 620, -1, -1, $WS_CAPTION + $WS_SYSMENU + $WS_MINIMIZEBOX + $WS_MAXIMIZEBOX + $WS_SIZEBOX)

$FileOpen = GUICtrlCreateButton("FileOpen ", 20, 470, 90, 50)
GUICtrlSetResizing(-1, $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT + $GUI_DOCKBOTTOM)

$Run = GUICtrlCreateButton("Run", 190, 470, 90, 50)
GUICtrlSetResizing(-1, $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT + $GUI_DOCKBOTTOM)

$Pause = GUICtrlCreateButton("Pause", 340, 470, 90, 50)
GUICtrlSetResizing(-1, $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT + $GUI_DOCKBOTTOM)

$Stop = GUICtrlCreateButton("Stop", 500, 470, 90, 50)
GUICtrlSetResizing(-1, $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT + $GUI_DOCKBOTTOM)

$Full = GUICtrlCreateButton("Fullscreen", 20, 535, 90, 50)
GUICtrlSetResizing(-1, $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT + $GUI_DOCKBOTTOM)

$bt_mute = GUICtrlCreateButton("Mute ", 190, 535, 90, 50)
GUICtrlSetResizing(-1, $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT + $GUI_DOCKBOTTOM)

$v_mais = GUICtrlCreateButton("Vol + ", 340, 535, 90, 50)
GUICtrlSetResizing(-1, $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT + $GUI_DOCKBOTTOM)

$v_menos = GUICtrlCreateButton("Vol - ", 500, 535, 90, 50)
GUICtrlSetResizing(-1, $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT + $GUI_DOCKBOTTOM)

$lab_mute = GUICtrlCreateLabel("Mute: 0", 190, 595, 90, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))

$lab_vol = GUICtrlCreateLabel("Vol: 100", 340, 595, 90, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))

Global $IGraphBuilder, $volume = 100, $mute = 0, $num = 0
GUISetState()

IMediaControl_Vol($IGraphBuilder, 100)

While True
    $iMsg = GUIGetMsg()
    Select
        Case $iMsg = $GUI_EVENT_CLOSE
            Exit
        Case $iMsg = $bt_mute
            If $mute = 0 Then
                $mute = 1
            Else
                $mute = 0
            EndIf
            IMediaControl_Mute($IGraphBuilder, $mute)
        Case $iMsg = $v_mais
            $volume += 5
            If $volume > 100 Then $volume = 100
            IMediaControl_Vol($IGraphBuilder, $volume)
        Case $iMsg = $v_menos
            $volume -= 5
            If $volume < 0 Then $volume = 0
            IMediaControl_Vol($IGraphBuilder, $volume)
        Case $iMsg = $Run
            IMediaControl_Run($IGraphBuilder)
        Case $iMsg = $Pause
            IMediaControl_Pause($IGraphBuilder)
        Case $iMsg = $Stop
            IMediaControl_Stop($IGraphBuilder)
        Case $iMsg = $Full
            IVideoWindow_put_FullScreenMode($IGraphBuilder, -1)
        Case $iMsg = $FileOpen
            $var = FileOpenDialog("", Default, "Video(*.avi;*.qt;*.mov;*.mpg;*.mpeg;*.m1v;*.wmv;*.flv;*.mp4)", 1 + 4)
            Local $iPosGet = WinGetPos($hGui, "")
            If Not @error Then
                WinMove("DirectShow", "", $iPosGet[0] - 1, $iPosGet[1])
                If Not ($IGraphBuilder) Then
                    $IGraphBuilder = GUICtrlCreateGraph($hGui, $var, 0, 0, 608, 456)
                Else
                    Re_GUICtrlCreateGraph($IGraphBuilder, $var)
                EndIf
                WinMove("DirectShow", "", $iPosGet[0] + 1, $iPosGet[1])
            EndIf
    EndSelect
WEnd

Func IMediaControl_Mute(ByRef $IGraphBuilder, $opt = 0)
    If $opt = 0 Then
        IMediaControl_Vol($IGraphBuilder, $volume)
    Else
        IMediaControl_Vol($IGraphBuilder, 0)
    EndIf
    GUICtrlSetData($lab_mute, "Mute: " & $opt)
EndFunc   ;==>IMediaControl_Mute

Func IMediaControl_Vol(ByRef $IGraphBuilder, $vol = 50)
    $IMediaControl = GetIMediaControl($IGraphBuilder)
    If @error Then Return SetError(1, 0, False)
    ;-------IMediaControl Vol Virtual Method Number Is 46;----------------
    $Rt = InterfaceCall($IMediaControl, "long", 46, "long", -Exp((100 - $vol) / 10.86))
    ;-------IMediaControl Vol Virtual Method Number Is 46;----------------
    GUICtrlSetData($lab_vol, "Vol: " & $vol)
    If @error Or $Rt[0] <> 1 Then
        CtrlGraphRelease($IMediaControl)
        Return SetError(2, 0, False)
    EndIf
    Return SetError(0, 0, True)
EndFunc   ;==>IMediaControl_Vol

Func IMediaControl_Run($IGraphBuilder)
    $IMediaControl = GetIMediaControl($IGraphBuilder)
    If @error Then Return SetError(1, 0, False)
    $State = IMediaControl_GetState($IGraphBuilder)
    If @error Then Return SetError(2, 0, False)
    If $State = 2 Then
        IMediaControl_Stop($IGraphBuilder)
        If @error Then Return SetError(3, 0, False)
    EndIf
    If $State = 2 Or $State = 0 Then
        IMediaSeeking_SeekToCurrent($IGraphBuilder)
        If @error Then Return SetError(4, 0, False)
    EndIf
    ;-------IMediaControl Run Virtual Method Number Is 8;----------------
    $Rt = InterfaceCall($IMediaControl, "long", 8)
    ;-------IMediaControl Run Virtual Method Number Is 8;----------------
    If @error Or $Rt[0] <> 1 Then
        CtrlGraphRelease($IMediaControl)
        Return SetError(5, 0, False)
    EndIf
    CtrlGraphRelease($IMediaControl)
    Return SetError(0, 0, True)
EndFunc   ;==>IMediaControl_Run

Func IMediaControl_Pause($IGraphBuilder)
    $IMediaControl = GetIMediaControl($IGraphBuilder)
    If @error Then Return SetError(1, 0, False)
    ;-------IMediaControl Pause Virtual Method Number Is 9;----------------
    $Rt = InterfaceCall($IMediaControl, "long", 9)
    ;-------IMediaControl Pause Virtual Method Number Is 9;----------------
    If @error Or $Rt[0] <> 1 Then
        CtrlGraphRelease($IMediaControl)
        Return SetError(2, 0, False)
    EndIf
    Return SetError(0, 0, True)
EndFunc   ;==>IMediaControl_Pause

Func IMediaControl_Stop($IGraphBuilder)
    $IMediaControl = GetIMediaControl($IGraphBuilder)
    If @error Then Return SetError(1, 0, False)
    ;-------IMediaControl Stop Virtual Method Number Is 10;----------------
    $Rt = InterfaceCall($IMediaControl, "long", 10)
    ;-------IMediaControl Stop Virtual Method Number Is 10;----------------
    If @error Or $Rt[0] <> 0 Then
        CtrlGraphRelease($IMediaControl)
        Return SetError(2, 0, False)
    EndIf
    CtrlGraphRelease($IMediaControl)
    Return SetError(0, 0, True)
EndFunc   ;==>IMediaControl_Stop

Func IVideoWindow_SetWindowPosition($IGraphBuilder, $L, $T, $W, $H)
    $IVideoWindow = GetIVideoWindow($IGraphBuilder)
    If @error Then Return SetError(1, 0, False)
    ;-------IVideoWindow SetWindowPosition Virtual Method Number Is 40;----------------
    $Rt = InterfaceCall($IVideoWindow, "long", 40, "long", $L, "long", $T, "long", $W, "long", $H)
    ;-------IVideoWindow SetWindowPosition Virtual Method Number Is 40;----------------
    If @error Or $Rt[0] <> 0 Then
        CtrlGraphRelease($IVideoWindow)
        Return SetError(2, 0, False)
    EndIf
    CtrlGraphRelease($IVideoWindow)
    Return SetError(0, 0, True)
EndFunc   ;==>IVideoWindow_SetWindowPosition

Func IVideoWindow_put_FullScreenMode($IGraphBuilder, $FullScreenMode)
    $IVideoWindow = GetIVideoWindow($IGraphBuilder)
    If @error Then Return SetError(1, 0, False)
    ;Sets a hotkey that calls a user function.
    ;HotKeySet("{ESC}", "HotKeyFullScreenMode")
    ;Func HotKeyFullScreenMode()
    ;IVideoWindow_put_FullScreenMode($IGraphBuilder,$FullScreenMode)
    ;EndFunc
    ;The put_FullScreenMode method enables or disables full-screen video rendering.
    ;FullScreenMode [in]
    ;Boolean value that specifies whether to enable or disable full-screen mode. Must be one
    ;of the following values:
    ;Value  Description
    ;OATRUE = -1    Switch to full-screen mode.
    ;OAFALSE = 0    Disable full-screen mode. (Default.)
    ;-------IVideoWindow put_FullScreenMode Virtual Method Number Is 37;----------------
    $Rt = InterfaceCall($IVideoWindow, "long", 37, "long", $FullScreenMode)
    ;-------IVideoWindow put_FullScreenMode Virtual Method Number Is 37;----------------
    If @error Or $Rt[0] <> 0 Then
        CtrlGraphRelease($IVideoWindow)
        Return SetError(2, 0, False)
    EndIf
    CtrlGraphRelease($IVideoWindow)
    Return SetError(0, 0, True)
EndFunc   ;==>IVideoWindow_put_FullScreenMode

Func GUICtrlCreateGraph($Gui, $FileName, $L, $T, $W, $H, $Style = -1, $ExStyle = -1, $Run = True)
    ;$FileName the name of a media file
    If $Style = -1 Then $Style = BitOR($WS_CHILD, $WS_CLIPCHILDREN, $WS_CLIPSIBLINGS)
    If $ExStyle = -1 Then $ExStyle = 0
    $StrIID_IGraphBuilder = "{56a868a9-0ad4-11ce-b03a-0020af0ba770}"
    $StrCLSID_FilterGraph = "{e436ebb3-524f-11ce-9f53-0020af0ba770}"
    $NewIGraphBuilder = GetObjFromGuid($StrIID_IGraphBuilder, $StrCLSID_FilterGraph)
    If @error Then Return SetError(1, 0, 0)

    If $StartGraph = 0 Then
        GUIRegisterMsg($WM_GRAPHNOTIFY, "CREATEGRAPH_WM_MSG")
        GUIRegisterMsg($WM_ERASEBKGND, "CREATEGRAPH_WM_MSG")
        GUIRegisterMsg($WM_ACTIVATEAPP, "CREATEGRAPH_WM_MSG")
        GUIRegisterMsg($WM_DEVMODECHANGE, "CREATEGRAPH_WM_MSG")
        GUIRegisterMsg($WM_DISPLAYCHANGE, "CREATEGRAPH_WM_MSG")
        GUIRegisterMsg($WM_PALETTECHANGED, "CREATEGRAPH_WM_MSG")
        GUIRegisterMsg($WM_PALETTEISCHANGING, "CREATEGRAPH_WM_MSG")
        GUIRegisterMsg($WM_QUERYNEWPALETTE, "CREATEGRAPH_WM_MSG")
        $StartGraph = 1
    ElseIf $StartGraph = 2 Then
        GUIRegisterMsg($WM_ERASEBKGND, "CREATEGRAPH_WM_MSG")
        GUIRegisterMsg($WM_ACTIVATEAPP, "CREATEGRAPH_WM_MSG")
        GUIRegisterMsg($WM_DEVMODECHANGE, "CREATEGRAPH_WM_MSG")
        GUIRegisterMsg($WM_DISPLAYCHANGE, "CREATEGRAPH_WM_MSG")
        GUIRegisterMsg($WM_PALETTECHANGED, "CREATEGRAPH_WM_MSG")
        GUIRegisterMsg($WM_PALETTEISCHANGING, "CREATEGRAPH_WM_MSG")
        GUIRegisterMsg($WM_QUERYNEWPALETTE, "CREATEGRAPH_WM_MSG")
        GUIRegisterMsg($WM_SYSCOLORCHANGE, "CREATEGRAPH_WM_MSG")
    EndIf

    Add_Remove_MsgGraphArray($NewIGraphBuilder) ; Add

    ;-------IGraphBuilder RenderFile Virtual Method Number Is 14;----------------
    $Rt = InterfaceCall($NewIGraphBuilder, "long", 14, "wstr", $FileName, "ptr", 0)
    If @error Or $Rt[0] <> 0 Then
        Add_Remove_MsgGraphArray($NewIGraphBuilder, 2) ; Remove
        CtrlGraphRelease($NewIGraphBuilder)
        Return SetError(2, 0, 0)
    EndIf
    ;-------IGraphBuilder RenderFile Virtual Method Number Is 14;----------------

    $IVideoWindow = GetIVideoWindow($NewIGraphBuilder)
    If @error Then
        Add_Remove_MsgGraphArray($NewIGraphBuilder, 2) ; Remove
        CtrlGraphRelease($NewIGraphBuilder)
        Return SetError(3, 0, 0)
    EndIf

    $IMediaEventEx = GetIMediaEventEx($NewIGraphBuilder)
    If @error Then
        Add_Remove_MsgGraphArray($NewIGraphBuilder, 2) ; Remove
        CtrlGraphRelease($NewIGraphBuilder, $IVideoWindow)
        Return SetError(4, 0, 0)
    EndIf

    ;-------IMediaEventEx SetNotifyWindow Virtual Method Number Is 14;----------------
    $Rt = InterfaceCall($IMediaEventEx, "long", 14, "ptr", $Gui, "long", $WM_GRAPHNOTIFY, "ptr", 0)
    If @error Or $Rt[0] <> 0 Then
        Add_Remove_MsgGraphArray($NewIGraphBuilder, 2) ; Remove
        CtrlGraphRelease($NewIGraphBuilder, $IVideoWindow, $IMediaEventEx)
        Return SetError(5, 0, 0)
    EndIf
    ;-------IMediaEventEx SetNotifyWindow Virtual Method Number Is 14;----------------

    ;-------IVideoWindow put_Owner Virtual Method Number Is 30;----------------
    $Rt = InterfaceCall($IVideoWindow, "long", 30, "ptr", $Gui)
    If @error Or $Rt[0] <> 0 Then
        Add_Remove_MsgGraphArray($NewIGraphBuilder, 2) ; Remove
        CtrlGraphRelease($NewIGraphBuilder, $IVideoWindow, $IMediaEventEx)
        Return SetError(6, 0, 0)
    EndIf
    ;-------IVideoWindow put_Owner Virtual Method Number Is 30;----------------

    ;-------IVideoWindow put_MessageDrain Virtual Method Number Is 32;----------------
    $Rt = InterfaceCall($IVideoWindow, "long", 32, "ptr", $Gui)
    If @error Or $Rt[0] <> 0 Then
        Add_Remove_MsgGraphArray($NewIGraphBuilder, 2) ; Remove
        CtrlGraphRelease($NewIGraphBuilder, $IVideoWindow, $IMediaEventEx)
        Return SetError(7, 0, 0)
    EndIf
    ;-------IVideoWindow put_MessageDrain Virtual Method Number Is 32;----------------

    ;-------IVideoWindow SetWindowPosition Virtual Method Number Is 40;----------------
    $Rt = InterfaceCall($IVideoWindow, "long", 40, "long", $L, "long", $T, "long", $W, "long", $H)
    If @error Or $Rt[0] <> 0 Then
        Add_Remove_MsgGraphArray($NewIGraphBuilder, 2) ; Remove
        ;-------IVideoWindow put_Owner Virtual Method Number Is 30;----------------
        $Rt = InterfaceCall($IVideoWindow, "long", 30, "ptr", 0)
        ;-------IVideoWindow put_Owner Virtual Method Number Is 30;----------------
        CtrlGraphRelease($NewIGraphBuilder, $IVideoWindow, $IMediaEventEx)
        Return SetError(8, 0, 0)
    EndIf
    ;-------IVideoWindow SetWindowPosition Virtual Method Number Is 40;----------------

    ;-------IVideoWindow put_WindowStyle Virtual Method Number Is 10;----------------
    $Rt = InterfaceCall($IVideoWindow, "long", 10, "long", $Style)
    If @error Or $Rt[0] <> 0 Then
        Add_Remove_MsgGraphArray($NewIGraphBuilder, 2) ; Remove
        ;-------IVideoWindow put_Owner Virtual Method Number Is 30;----------------
        $Rt = InterfaceCall($IVideoWindow, "long", 30, "ptr", 0)
        ;-------IVideoWindow put_Owner Virtual Method Number Is 30;----------------
        CtrlGraphRelease($NewIGraphBuilder, $IVideoWindow, $IMediaEventEx)
        Return SetError(9, 0, 0)
    EndIf
    ;-------IVideoWindow put_WindowStyle Virtual Method Number Is 10;----------------

    ;-------IVideoWindow put_WindowStyleEx Virtual Method Number Is 12;----------------
    $Rt = InterfaceCall($IVideoWindow, "long", 12, "long", $ExStyle)
    If @error Or $Rt[0] <> 0 Then
        Add_Remove_MsgGraphArray($NewIGraphBuilder, 2) ; Remove
        ;-------IVideoWindow put_Owner Virtual Method Number Is 30;----------------
        $Rt = InterfaceCall($IVideoWindow, "long", 30, "ptr", 0)
        ;-------IVideoWindow put_Owner Virtual Method Number Is 30;----------------
        CtrlGraphRelease($NewIGraphBuilder, $IVideoWindow, $IMediaEventEx)
        Return SetError(10, 0, 0)
    EndIf
    ;-------IVideoWindow put_WindowStyleEx Virtual Method Number Is 12;----------------

    ;-------IVideoWindow put_AutoShow Virtual Method Number Is 14;----------------
    $Rt = InterfaceCall($IVideoWindow, "long", 14, "long", -1)
    If @error Or $Rt[0] <> 0 Then
        Add_Remove_MsgGraphArray($NewIGraphBuilder, 2) ; Remove
        ;-------IVideoWindow put_Owner Virtual Method Number Is 30;----------------
        $Rt = InterfaceCall($IVideoWindow, "long", 30, "ptr", 0)
        ;-------IVideoWindow put_Owner Virtual Method Number Is 30;----------------
        CtrlGraphRelease($NewIGraphBuilder, $IVideoWindow, $IMediaEventEx)
        Return SetError(11, 0, 0)
    EndIf
    ;-------IVideoWindow put_AutoShow Virtual Method Number Is 14;----------------

    If ($Run) Then
        IMediaControl_Run($NewIGraphBuilder)
    EndIf

    CtrlGraphRelease($IVideoWindow, $IMediaEventEx)

    Return SetError(0, 0, $NewIGraphBuilder)

EndFunc   ;==>GUICtrlCreateGraph

Func Re_GUICtrlCreateGraph(ByRef $OutIGraphBuilder, $FileName, $Run = True)

    $IVideoWindow = GetIVideoWindow($OutIGraphBuilder)
    If @error Then Return SetError(1, 0, False)

    $IMediaEventEx = GetIMediaEventEx($OutIGraphBuilder)
    If @error Then Return SetError(2, 0, False)

    ;-------IVideoWindow get_WindowStyle Virtual Method Number Is 11;----------------
    $Rt = InterfaceCall($IVideoWindow, "long", 11, "long*", 0)
    If @error Or $Rt[0] <> 0 Then
        CtrlGraphRelease($IVideoWindow, $IMediaEventEx)
        Return SetError(3, 0, False)
    EndIf
    $Style = $Rt[1]
    ;-------IVideoWindow get_WindowStyle Virtual Method Number Is 11;----------------

    ;-------IVideoWindow get_WindowStyleEx Virtual Method Number Is 13;----------------
    $Rt = InterfaceCall($IVideoWindow, "long", 13, "long*", 0)
    If @error Or $Rt[0] <> 0 Then
        CtrlGraphRelease($IVideoWindow, $IMediaEventEx)
        Return SetError(4, 0, False)
    EndIf
    $ExStyle = $Rt[1]
    ;-------IVideoWindow get_WindowStyleEx Virtual Method Number Is 13;----------------

    ;-------IVideoWindow get_Owner Virtual Method Number Is 31;----------------
    $Rt = InterfaceCall($IVideoWindow, "long", 31, "ptr*", 0)
    If @error Or $Rt[0] <> 0 Then
        CtrlGraphRelease($IVideoWindow, $IMediaEventEx)
        Return SetError(5, 0, False)
    EndIf
    $Gui = $Rt[1]
    ;-------IVideoWindow get_Owner Virtual Method Number Is 31;----------------

    ;-------IVideoWindow GetRestorePosition Virtual Method Number Is 44;----------------
    $Rt = InterfaceCall($IVideoWindow, "long", 44, "long*", 0, "long*", 0, "long*", 0, "long*", 0)
    If @error Or $Rt[0] <> 0 Then
        CtrlGraphRelease($IVideoWindow, $IMediaEventEx)
        Return SetError(6, 0, False)
    EndIf
    $L = $Rt[1]
    $T = $Rt[2]
    $W = $Rt[3]
    $H = $Rt[4]
    ;-------IVideoWindow GetRestorePosition Virtual Method Number Is 44;------------

    $RtIGraphBuilder = GUICtrlCreateGraph($Gui, $FileName, $L, $T, $W, $H, $Style, $ExStyle, $Run)
    If @error Then
        CtrlGraphRelease($IVideoWindow, $IMediaEventEx)
        Return SetError(7, 0, False)
    Else

        IMediaControl_Stop($OutIGraphBuilder)
        Add_Remove_MsgGraphArray($OutIGraphBuilder, 2) ; Remove

        ;-------IMediaEventEx SetNotifyWindow Virtual Method Number Is 14;----------------
        $Rt = InterfaceCall($IMediaEventEx, "long", 14, "ptr", 0, "long", 0, "ptr", 0)
        ;-------IMediaEventEx SetNotifyWindow Virtual Method Number Is 14;----------------

        ;-------IVideoWindow put_Visible Virtual Method Number Is 20;----------------
        $Rt = InterfaceCall($IVideoWindow, "long", 20, "long", 0)
        ;-------IVideoWindow put_Visible Virtual Method Number Is 20;----------------

        ;-------IVideoWindow put_Owner Virtual Method Number Is 30;----------------
        $Rt = InterfaceCall($IVideoWindow, "long", 30, "ptr", 0)
        ;-------IVideoWindow put_Owner Virtual Method Number Is 30;----------------

        CtrlGraphRelease($OutIGraphBuilder, $IVideoWindow, $IMediaEventEx)
        $OutIGraphBuilder = $RtIGraphBuilder

    EndIf

    Return SetError(0, 0, True)

EndFunc   ;==>Re_GUICtrlCreateGraph

Func GetIVideoWindow($IGraphBuilder)
    $IID_IVideoWindow = IIDFromString("{56a868b4-0ad4-11ce-b03a-0020af0ba770}")
    If @error Then Return SetError(1, 0, 0)
    ;---------IUnknown QueryInterface Virtual Method Number Is 1;-------------------
    $Rt = InterfaceCall($IGraphBuilder, "long", 1, "struct*", $IID_IVideoWindow, "ptr*", 0)
    ;---------IUnknown QueryInterface Virtual Method Number Is 1;-------------------
    If @error Or $Rt[0] <> 0 Then Return SetError(2, 0, 0)
    Return SetError(0, 0, $Rt[2])
EndFunc   ;==>GetIVideoWindow

Func GetIMediaControl($IGraphBuilder)
    $IID_IMediaControl = IIDFromString("{56a868b1-0ad4-11ce-b03a-0020af0ba770}")
    If @error Then Return SetError(1, 0, 0)
    ;---------IUnknown QueryInterface Virtual Method Number Is 1;-------------------
    $Rt = InterfaceCall($IGraphBuilder, "long", 1, "struct*", $IID_IMediaControl, "ptr*", 0)
    ;---------IUnknown QueryInterface Virtual Method Number Is 1;-------------------
    If @error Or $Rt[0] <> 0 Then Return SetError(2, 0, 0)
    Return SetError(0, 0, $Rt[2])
EndFunc   ;==>GetIMediaControl

Func GetIMediaSeeking($IGraphBuilder)
    $IID_IMediaSeeking = IIDFromString("{36b73880-c2c8-11cf-8b46-00805f6cef60}")
    If @error Then Return SetError(1, 0, 0)
    ;---------IUnknown QueryInterface Virtual Method Number Is 1;-------------------
    $Rt = InterfaceCall($IGraphBuilder, "long", 1, "struct*", $IID_IMediaSeeking, "ptr*", 0)
    ;---------IUnknown QueryInterface Virtual Method Number Is 1;-------------------
    If @error Or $Rt[0] <> 0 Then Return SetError(2, 0, 0)
    Return SetError(0, 0, $Rt[2])
EndFunc   ;==>GetIMediaSeeking

Func GetIMediaEventEx($IGraphBuilder)
    $IID_IMediaEventEx = IIDFromString("{56a868c0-0ad4-11ce-b03a-0020af0ba770}")
    If @error Then Return SetError(1, 0, 0)
    ;---------IUnknown QueryInterface Virtual Method Number Is 1;-------------------
    $Rt = InterfaceCall($IGraphBuilder, "long", 1, "struct*", $IID_IMediaEventEx, "ptr*", 0)
    ;---------IUnknown QueryInterface Virtual Method Number Is 1;-------------------
    If @error Or $Rt[0] <> 0 Then Return SetError(2, 0, 0)
    Return SetError(0, 0, $Rt[2])
EndFunc   ;==>GetIMediaEventEx

Func IMediaSeeking_SeekToCurrent($IGraphBuilder)
    ;-------IMediaSeeking SetPositions Virtual Method Number Is 15;----------------
    $IMediaSeeking = GetIMediaSeeking($IGraphBuilder)
    If @error Then Return SetError(1, 0, False)
    $Rt = InterfaceCall($IMediaSeeking, "long", 15, "INT64*", 0, "DWORD", 0x1, "INT64*", 0, "DWORD", 0)
    ;-------IMediaSeeking SetPositions Virtual Method Number Is 15;----------------
    If @error Or $Rt[0] <> 0 Then
        CtrlGraphRelease($IMediaSeeking)
        Return SetError(2, 0, False)
    EndIf
    IMediaControl_Stop($IGraphBuilder)
    CtrlGraphRelease($IMediaSeeking)
    Return SetError(0, 0, True)
EndFunc   ;==>IMediaSeeking_SeekToCurrent

Func IMediaControl_StopWhenReady($IGraphBuilder)
    $IMediaControl = GetIMediaControl($IGraphBuilder)
    If @error Then Return SetError(1, 0, False)
    ;-------IMediaControl StopWhenReady Virtual Method Number Is 16;----------------
    $Rt = InterfaceCall($IMediaControl, "long", 16)
    ;-------IMediaControl StopWhenReady Virtual Method Number Is 16;----------------
    If @error Or $Rt[0] <> 0 Then
        CtrlGraphRelease($IMediaControl)
        Return SetError(2, 0, False)
    EndIf
    CtrlGraphRelease($IMediaControl)
    Return SetError(0, 0, True)
EndFunc   ;==>IMediaControl_StopWhenReady

Func IMediaControl_GetState($IGraphBuilder)
    ;enum _FilterState
    ;{  State_Stopped   = 0,
    ;State_Paused   = State_Stopped + 1,
    ;State_Running  = State_Paused + 1
    ;}  FILTER_STATE;
    $IMediaControl = GetIMediaControl($IGraphBuilder)
    If @error Then Return SetError(1, 0, -1)
    ;-------IMediaControl GetState Virtual Method Number Is 11;----------------
    $Rt = InterfaceCall($IMediaControl, "long", 11, "long", 1000, "long*", 0)
    ;-------IMediaControl GetState Virtual Method Number Is 11;----------------
    If @error Or $Rt[0] <> 0 Then
        CtrlGraphRelease($IMediaControl)
        Return SetError(2, 0, -1)
    EndIf
    CtrlGraphRelease($IMediaControl)
    Return SetError(0, 0, $Rt[2])
EndFunc   ;==>IMediaControl_GetState

Func InterfaceCall($Inface, $ReturnType, $MethodNum, $Type1 = 0, $Param1 = 0, $Type2 = 0, $Param2 = 0 _
        , $Type3 = 0, $Param3 = 0, $Type4 = 0, $Param4 = 0, $Type5 = 0, $Param5 = 0, $Type6 = 0, $Param6 = 0 _
        , $Type7 = 0, $Param7 = 0, $Type8 = 0, $Param8 = 0, $Type9 = 0, $Param9 = 0, $Type10 = 0, $Param10 = 0 _
        , $Type11 = 0, $Param11 = 0, $Type12 = 0, $Param12 = 0, $Type13 = 0, $Param13 = 0, $Type14 = 0, $Param14 = 0 _
        , $Type15 = 0, $Param15 = 0, $Type16 = 0, $Param16 = 0, $Type17 = 0, $Param17 = 0, $Type18 = 0, $Param18 = 0 _
        , $Type19 = 0, $Param19 = 0, $Type20 = 0, $Param20 = 0, $Type21 = 0, $Param21 = 0, $Type22 = 0, $Param22 = 0 _
        , $Type23 = 0, $Param23 = 0, $Type24 = 0, $Param24 = 0, $Type25 = 0, $Param25 = 0, $Type26 = 0, $Param26 = 0 _
        , $Type27 = 0, $Param27 = 0, $Type28 = 0, $Param28 = 0, $Type29 = 0, $Param29 = 0, $Type30 = 0, $Param30 = 0)
    ;;Return Array Of DllCallAddress
    ;Only Call Virtual Method Form any Class Or From any Interface
    ;$MethodNum ==> Virtual Method Number In (Virtual Methods Table) ;See the examples
    ;-------------------------------------------------------------------;C++ Example1
    ;C++ Example1
    ;class iClass
    ;{
    ;public:
    ;void MethodA()
    ;{
    ;MessageBox(0,"MethodA","MSG",0);
    ;}
    ;virtual void VirtualMethodB()
    ;{
    ;MessageBox(0,"VirtualMethodB","MSG",0);
    ;}
    ;virtual void VirtualMethodC()
    ;{
    ;MessageBox(0,"VirtualMethodC","MSG",0);
    ;}
    ;void MethodB()
    ;{
    ;MessageBox(0,"MethodB","MSG",0);
    ;}
    ;virtual void VirtualMethodA()
    ;{
    ;MessageBox(0,"VirtualMethodA","MSG",0);
    ;}
    ;};
    ;-----------------------------------------------------------;Virtual Methods Table
    ;Virtual Methods Table
    ;virtual void VirtualMethodB() ==> Virtual Method Number Is 1
    ;virtual void VirtualMethodC() ==> Virtual Method Number Is 2
    ;virtual void VirtualMethodA() ==> Virtual Method Number Is 3
    ;-----------------------------------------------------------;Virtual Methods Table
    ;-------------------------------------------------------------------;C++ Example1

    ;////////////////////////////////////////////////////////////////////////////////

    ;-------------------------------------------------------------------;C++ Example2
    ;C++ Example2
    ;class iClassA
    ;{
    ;public:
    ;void MethodA()
    ;{
    ;MessageBox(0,"MethodA","MSG",0);
    ;}
    ;virtual void VirtualMethodB()
    ;{
    ;MessageBox(0,"VirtualMethodB","MSG",0);
    ;}
    ;virtual void VirtualMethodC()
    ;{
    ;MessageBox(0,"VirtualMethodC","MSG",0);
    ;}
    ;};

    ;class iClassB : public iClassA
    ;{
    ;public:
    ;void MethodD()
    ;{
    ;MessageBox(0,"MethodD","MSG",0);
    ;}
    ;virtual void VirtualMethodF()
    ;{
    ;MessageBox(0,"VirtualMethodF","MSG",0);
    ;}
    ;virtual void VirtualMethodE()
    ;{
    ;MessageBox(0,"VirtualMethodE","MSG",0);
    ;}
    ;};
    ;////////////////////////////////////////////////////////////////////////////////
    ;////////////////////////////////////////////////////////////////////////////////
    ;------------------------------------------;Virtual Methods Table Of iClassA Class
    ;Virtual Methods Table Of iClassA Class
    ;virtual void VirtualMethodB() ==> Virtual Method Number Is 1
    ;virtual void VirtualMethodC() ==> Virtual Method Number Is 2
    ;------------------------------------------;Virtual Methods Table Of iClassA Class
    ;////////////////////////////////////////////////////////////////////////////////
    ;///////////////////////////////////////////////////////////////////////////////
    ;------------------------------------------;Virtual Methods Table Of iClassB Class
    ;class iClassB : public iClassA
    ;base class ==> iClassA
    ;derived class ==> iClassB
    ;http://msdn.microsoft.com/en-us/library/hzk8a7d3.aspx
    ;When preceding the name of a base class, the public keyword specifies that the public
    ;and protected members of the base class are public and protected members, respectively,
    ;of the derived class.
    ;-------------------------------------------------------------------------------------
    ;Virtual Methods Table Of iClassB Class
    ;virtual void VirtualMethodB() In (iClassA) ==> Virtual Method Number Is 1
    ;virtual void VirtualMethodC() In (iClassA) ==> Virtual Method Number Is 2
    ;virtual void VirtualMethodF() In (iClassB) ==> Virtual Method Number Is 3
    ;virtual void VirtualMethodE() In (iClassB) ==> Virtual Method Number Is 4
    ;------------------------------------------;Virtual Methods Table Of iClassB Class
    ;-------------------------------------------------------------------;C++ Example2
    ;////////////////////////////////////////////////////////////////////////////////
    If Not IsPtr($Inface) Or ($MethodNum < 1) Then Return SetError(1, 0, 0)
    If (@NumParams > 3) And (Mod((@NumParams - 3), 2) <> 0) Then Return SetError(2, 0, 0)
    Local $iMethAddress = GetMethodAddress($Inface, $MethodNum)
    If Not ($iMethAddress) Then Return SetError(3, 0, 0)
    Local $iDataType = "", $iFuncParam = "", $iCommand = "", $iReturn = 0
    ;Why use Inface Param In DllCallAddress Function Because the Function of the method
    ;starts from the (Interface Or class)
    ;See here
    ;int class::MethodFunction( int Param ){return 0;};
    $iCommand = 'DllCallAddress("' & $ReturnType & '",Eval("iMethAddress"),"ptr",Eval("Inface"),'
    For $i = 1 To ((@NumParams - 3) / 2)
        $iDataType = Eval("Type" & $i)
        $iCommand &= '"' & $iDataType & '",'
        $iFuncParam = 'Eval("Param' & $i & '"),'
        $iCommand &= $iFuncParam
    Next
    $iCommand = StringTrimRight($iCommand, 1)
    $iCommand &= ")"
    $iReturn = Execute($iCommand)
    If @error Then Return SetError(4, 0, 0)
    Local $nReturn[UBound($iReturn) - 1], $j = 0
    For $i = 0 To UBound($iReturn) - 1
        If ($i = 1) Then ContinueLoop ;Skip $Inface Element
        $nReturn[$j] = $iReturn[$i]
        $j += 1
    Next
    Return SetError(0, 0, $nReturn)
EndFunc   ;==>InterfaceCall

Func GetMethodAddress($Inface, $MethodNum)
    ;$MethodNum ==> Virtual Method Number In (Virtual Methods Table)
    Local $SizeOfUlong_Ptr = 4, $iMethAddress = 0, $OutCastStruct1 = 0
    Local $OutCast1 = 0, $OutCastStruct2 = 0
    If Not IsPtr($Inface) Or ($MethodNum < 1) Then Return SetError(1, 0, 0)
    ;-------------------------------------------------------
    $OutCastStruct1 = DllStructCreate("ULONG_PTR", $Inface)
    $OutCast1 = DllStructGetData($OutCastStruct1, 1)
    ;In C++ ==> unsigned long** OutCast1 = *(unsigned long***)Inface;
    ;--------------------------------------------------------
    ;-------------------------------------------------------
    $OutCastStruct2 = DllStructCreate("ULONG_PTR", $OutCast1 + ($SizeOfUlong_Ptr * ($MethodNum - 1)))
    $iMethAddress = DllStructGetData($OutCastStruct2, 1)
    ;$OutCast1 + ($SizeOfUlong_Ptr * ($MethodNum - 1)) ==> $OutCast1 Is PTR Array Of Virtual Methods Table // Method PTR = Array[MethodNum - 1]
    ;In C++ ==> unsigned long* iMethAddress = *(unsigned long**)((BYTE*)OutCast1 + (SizeOfUlong_Ptr * (MethodNum - 1)));
    ;Or In C++ ==> unsigned long* iMethAddress = OutCast1[MethodNum - 1];
    ;--------------------------------------------------------
    If (IsBadCodePtr($iMethAddress)) Then Return SetError(2, 0, 0)
    Return SetError(0, 0, $iMethAddress)
EndFunc   ;==>GetMethodAddress

Func IsBadCodePtr($lpfn)
    Local $iReturn
    $iReturn = DllCall("Kernel32.dll", "BOOL", "IsBadCodePtr", "ptr", $lpfn)
    If @error Then Return SetError(1, 0, 0)
    Return SetError(0, 0, $iReturn[0])
EndFunc   ;==>IsBadCodePtr

Func CLSIDFromString($psz)
    $GUID = DllStructCreate("ulong Data1;ushort Data2;ushort Data3;byte Data4[8]")
    $Oleerror = DllCall("Ole32.dll", "int", "CLSIDFromString", "WSTR", $psz, "struct*", $GUID)
    If @error Or $Oleerror[0] <> 0 Then Return SetError(1, 0, 0)
    Return SetError(0, 0, $Oleerror[2])
EndFunc   ;==>CLSIDFromString

Func IIDFromString($psz)
    $GUID = DllStructCreate("ulong Data1;ushort Data2;ushort Data3;byte Data4[8]")
    $Oleerror = DllCall("Ole32.dll", "int", "IIDFromString", "WSTR", $psz, "struct*", $GUID)
    If @error Or $Oleerror[0] <> 0 Then Return SetError(1, 0, 0)
    Return SetError(0, 0, $Oleerror[2])
EndFunc   ;==>IIDFromString

Func CREATEGRAPH_WM_MSG($hWnd, $Msg, $wParam, $lParam)
    If IsArray($MsgGraphArray) Then
        For $i = 0 To UBound($MsgGraphArray) - 1
            Switch $Msg
                Case $WM_GRAPHNOTIFY
                    Local $EC_COMPLETE = 0x01
                    $IMediaEventEx = GetIMediaEventEx($MsgGraphArray[$i])
                    If Not @error Then
                        ;-------IMediaEventEx GetEvent Virtual Method Number Is 9;----------------
                        $Rt = InterfaceCall($IMediaEventEx, "long", 9, "Long*", 0, "LONG_PTR*", 0, "LONG_PTR*", 0, "long", 100)
                        ;-------IMediaEventEx GetEvent Virtual Method Number Is 9;----------------
                        If Not @error And $Rt[0] = 0 Then
                            $lEventCode = $Rt[1]
                            $lParam1 = $Rt[2]
                            $lParam2 = $Rt[3]
                            If $lEventCode = $EC_COMPLETE Then
                                IMediaControl_StopWhenReady($MsgGraphArray[$i])
                            EndIf
                            ;-------IMediaEventEx FreeEventParams Virtual Method Number Is 13;----------------
                            InterfaceCall($IMediaEventEx, "long", 13, "Long", $lEventCode, "LONG_PTR", $lParam1, "LONG_PTR", $lParam2)
                            ;-------IMediaEventEx FreeEventParams Virtual Method Number Is 13;----------------
                        EndIf
                    EndIf
                Case $WM_ERASEBKGND
                    $IVideoWindow = GetIVideoWindow($MsgGraphArray[$i])
                    If Not @error Then
                        ;-------IVideoWindow put_BackgroundPalette Virtual Method Number Is 18;----------------
                        ;The put_BackgroundPalette method specifies whether the video window realizes its palette
                        ;in the background.
                        ;BackgroundPalette [in]
                        ;Specifies whether the video renderer realizes it palette in the background. Must be one of
                        ;the following values:
                        ;Value  Description
                        ;OATRUE = -1    The video renderer realizes the palette in the background.
                        ;OAFALSE = 0    The video renderer does not realize the palette in the background. (Default.)
                        Local $BackgroundPalette = -1
                        $Rt = InterfaceCall($IVideoWindow, "long", 18, "long", $BackgroundPalette)
                        ;-------IVideoWindow put_BackgroundPalette Virtual Method Number Is 18;----------------
                        CtrlGraphRelease($IVideoWindow)
                        ; No Return
                    EndIf
                Case Else
                    $IVideoWindow = GetIVideoWindow($MsgGraphArray[$i])
                    If Not @error Then
                        ;-------IVideoWindow NotifyOwnerMessage Virtual Method Number Is 39;----------------
                        InterfaceCall($IVideoWindow, "long", 39, "ptr", $hWnd, "long", $Msg, "long", $wParam, "long", $lParam)
                        ;-------IVideoWindow NotifyOwnerMessage Virtual Method Number Is 39;----------------
                        CtrlGraphRelease($IVideoWindow)
                        Return $GUI_RUNDEFMSG
                    EndIf
            EndSwitch
        Next
    EndIf
EndFunc   ;==>CREATEGRAPH_WM_MSG

Func CREATEGRAPH_ON_EXIT()
    DllCall($Ole32, "long", "CoUninitialize")
    DllClose($Ole32)
EndFunc   ;==>CREATEGRAPH_ON_EXIT

Func CtrlGraphRelease($IUnknown1 = 0, $IUnknown2 = 0, $IUnknown3 = 0)
    If ($IUnknown1) Then IUnknownRelease($IUnknown1)
    If ($IUnknown2) Then IUnknownRelease($IUnknown2)
    If ($IUnknown3) Then IUnknownRelease($IUnknown3)
EndFunc   ;==>CtrlGraphRelease

Func Add_Remove_MsgGraphArray($IGraphBuilderObj, $Flag = 1)
    ;$Flag = 1 Add
    ;$Flag = 2 Remove
    Switch $Flag
        Case 1
            If Not IsArray($MsgGraphArray) Then
                Local $TempMsgGraphArray[1]
                $TempMsgGraphArray[0] = $IGraphBuilderObj
                $MsgGraphArray = $TempMsgGraphArray
                Return SetError(0, 0, True)
            Else
                For $i = 0 To UBound($MsgGraphArray) - 1
                    If $IGraphBuilderObj = $MsgGraphArray[$i] Then Return SetError(1, 0, False)
                Next
                ReDim $MsgGraphArray[UBound($MsgGraphArray) + 1]
                $MsgGraphArray[UBound($MsgGraphArray) - 1] = $IGraphBuilderObj
                Return SetError(0, 0, True)
            EndIf
        Case 2
            If IsArray($MsgGraphArray) Then
                Local $TempMsgGraphArray[UBound($MsgGraphArray)], $Test = False, $j = 0
                For $i = 0 To UBound($MsgGraphArray) - 1
                    If $IGraphBuilderObj = $MsgGraphArray[$i] Then
                        $Test = True
                        ContinueLoop
                    EndIf
                    $TempMsgGraphArray[$j] = $MsgGraphArray[$i]
                    $j += 1
                Next
                If ($Test) Then
                    If UBound($TempMsgGraphArray) > 1 Then
                        ReDim $TempMsgGraphArray[UBound($TempMsgGraphArray) - 1]
                        $MsgGraphArray = $TempMsgGraphArray
                    Else
                        $MsgGraphArray = 0
                    EndIf
                    Return SetError(0, 0, True)
                Else
                    Return SetError(2, 0, False)
                EndIf
            EndIf
        Case Else
            Return SetError(3, 0, False)
    EndSwitch
EndFunc   ;==>Add_Remove_MsgGraphArray

Func IUnknownRelease($IUnknown)
    ;-------IUnknown Release Virtual Method Number Is 3;----------------
    $Rt = InterfaceCall($IUnknown, "long", 3)
    ;-------IUnknown Release Virtual Method Number Is 3;----------------
    If @error Then Return SetError(1, 0, 0)
    Return SetError(0, 0, $Rt[0])
EndFunc   ;==>IUnknownRelease

Func GetObjFromGuid($StrIID, $StrCLSID)
    Local $LSCTX_ALL = BitOR(0x1, 0x4, 0x16), $Rt = 0
    If Not ($CoInitialize) Then
        $Rt = DllCall($Ole32, "long", "CoInitialize", "ptr", 0)
        If @error Or ($Rt[0] <> 0 And $Rt[0] <> 1) Then Return SetError(1, 0, 0)
        $CoInitialize = True
        OnAutoItExitRegister("CREATEGRAPH_ON_EXIT")
    EndIf
    $clsid = CLSIDFromString($StrCLSID)
    If @error Then Return SetError(2, 0, 0)
    $riid = IIDFromString($StrIID)
    If @error Then Return SetError(3, 0, 0)
    $Rt = DllCall($Ole32, "long", "CoCreateInstance", "ptr", DllStructGetPtr($clsid), _
            "ptr", 0, "DWORD", $LSCTX_ALL, "ptr", DllStructGetPtr($riid), "ptr*", 0)
    If @error Or $Rt[0] <> 0 Then Return SetError(4, 0, 0)
    Return SetError(0, 0, $Rt[5])
EndFunc   ;==>GetObjFromGuid

;~ Func WM_SIZE($hWnd, $iMsg, $wParam, $lParam)
;~  #forceref $iMsg, $wParam
;~  Local $iPosGet = WinGetClientSize($hGui, "")
;~  IVideoWindow_SetWindowPosition($IGraphBuilder, 0, 0, $iPosGet[0], $iPosGet[1] - 100)
;~  Return $GUI_RUNDEFMSG
;~ EndFunc   ;==>WM_SIZE

 

Edited by Belini
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...