Jump to content

UDF Video.au3 - problems after updating windows 10


 Share

Recommended Posts

To this day I have used the UDF video.au3 made by @smashly and it always worked but after the last update of windows 10 started to give problems when it touches for while, someone can help me to solve or indicate for me another UDF does it work properly on windows 10 upgraded?

Edited by Belini
Link to comment
Share on other sites

Not really, maybe you can fix the udf. What sort of problems?

Spoiler

Renamer - Rename files and folders, remove portions of text from the filename etc.

GPO Tool - Export/Import Group policy settings.

MirrorDir - Synchronize/Backup/Mirror Folders

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

String Trigger - Triggers pasting text or applications or internet links on specific strings.

Inconspicuous - Hide files in plain sight, not fully encrypted.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

IUIAutomation - Topic with framework and examples

Au3Record.exe

Link to comment
Share on other sites

16 hours ago, careca said:

Not really, maybe you can fix the udf. What sort of problems?

After about 5 songs the program hangs and gets black screen there I have to give ctrl + alt + del to close the program and reopen again!

I think there have been changes in winmm.dll in the last update of windows 10 and maybe _Video_Close is not closing the previous videos when they are finished!

 

Link to comment
Share on other sites

I tried to use the old dll but it does not work if I indicate the dll in the program folder, does anyone know how to do not to use the dll from the system32 folder?

Use winmm.dll

$iRet = DllCall("winmm.dll", "int", "mciSendStringA", "str", $string, "str", "", "long", $iLen, "long", 0); Only works if it is the dll of the system32 folder

$iRet = DllCall(@ScriptDir & "\winmm.dll", "int", "mciSendStringA", "str", $string, "str", "", "long", $iLen, "long", 0); With the dll in the program folder does not work!

Smashly UDF I was using

; ========================================================= EXAMPLE =========================================================
#include <File.au3>
#include <Array.au3>
#include <Crypt.au3>
#include <GUIConstantsEX.au3>
#include <WindowsConstants.au3>
#include <SliderConstants.au3>

Global $idS, $Tam, $Pos, $local, $arquivos
Global $BtnMais, $BtnMenos, $Vol = 50, $SlideWave, $video
Global $Tocando = False, $soundhandle, $gui, $posicao, $tamanho, $abrir, $play

$gui = GUICreate("Player", 644, 570, -1, -1, $WS_CLIPCHILDREN); obrigatório colocar $WS_CLIPCHILDREN

GUICtrlCreateLabel("TIME:", 10, 510, 50, 20)
$posicao = GUICtrlCreateLabel("00:00:00", 60, 510, 50, 20)
GUICtrlCreateLabel("/", 110, 510, 10, 20)
$tamanho = GUICtrlCreateLabel("00:00:00", 125, 510, 50, 20)

$play = GUICtrlCreateButton("PLAY", 280, 502, 80, 30)
$abrir = GUICtrlCreateButton("OPEN", 380, 512, 80, 22)

$Volume = GUICtrlCreateLabel("Volume: " & $Vol & " %", 525, 486, 70, 15)
$SlideWave = GUICtrlCreateSlider(475, 504, 170, 30)
GUICtrlSetLimit($SlideWave, 100, 0)
GUICtrlSetData($SlideWave, $Vol)

$soundhandle = ControlGetHandle($gui, "", $SlideWave)
GUICtrlSetState($play, $GUI_DISABLE)
GUISetState(@SW_SHOW, $gui)

GUIRegisterMsg($Wm_Hscroll, "_WM_HSCROLL")

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit (0)
        Case $abrir
            If Not $Tocando Then
                $video = FileOpenDialog("Abrir arquivos .mp4", @ScriptDir, "Midia (*.mp4)")
                If Not @error Then
                    _PLAYER($video)
                    GUICtrlSetState($play, $GUI_ENABLE)
                EndIf
            Else
                $Tocando = False
                _Video_close($idS)
                GUICtrlSetData($posicao, "00:00:00")
                GUICtrlSetState($play, $GUI_DISABLE)
                GUICtrlSetData($abrir, "OPEN")
            EndIf
        Case $play
            ;$Video =
            _PLAYER("PLAY")
    EndSwitch
WEnd

Func _PLAYER($local = False)
    Local $randon, $i
    If $local = "PLAY" Then
        If GUICtrlRead($play) = "PLAY" Then
            $Tocando = True
            AdlibRegister("_PLAYER", 1000)
            _Video_Play($idS)
            _Video_Volume($idS, 50)
            GUICtrlSetData($play, "PLAY")
            GUICtrlSetData($abrir, "STOP")
        Else
            _Video_Pause($idS)
            GUICtrlSetData($play, "PLAY")
        EndIf
        Return
    EndIf

    If $local Then
        $idS = _Video_Open($video, $gui, 2, 2, 640, 480)
        $Tam = _Video_Length($idS, 1)
        GUICtrlSetData($tamanho, _Video_Length($idS))
        GUICtrlSetData($play, "PLAY")
        Return
    EndIf

    $Pos = _Video_TimePos($idS, 1)

    If $Pos = $Tam Then
        GUICtrlSetData($posicao, "00:00:00")
        _Video_close($idS)
        GUICtrlSetState($play, $GUI_DISABLE)
        GUICtrlSetData($play, "PLAY")
        GUICtrlSetData($abrir, "OPEN")
        $Tocando = False
    ElseIf $Pos <> 0 Then
        GUICtrlSetData($posicao, _Video_TimePos($idS))
    EndIf

EndFunc   ;==>_PLAYER


Func _WM_HSCROLL($hWnd, $iMsg, $wParam, $lParam)
    #forceref $iMsg, $wParam

    Switch $lParam
        Case $soundhandle
            _Video_Volume($idS, GUICtrlRead($SlideWave))
            GUICtrlSetData($Volume, "Volume: " & GUICtrlRead($SlideWave) & " %")
    EndSwitch

    Return $GUI_RUNDEFMSG

EndFunc   ;==>_WM_HSCROLL
; ========================================================= EXAMPLE =========================================================

#region ==> UDF Vídeo By: smashly
#include-once
Global $vRet, $iTicks
;==================================== #CURRENT FUNCTIONS#==================================================
; _Video_Close
; _Video_Dimension ==> Adicionado
; _Video_FrameRate ==> Adicionado
; _Video_Length
; _Video_Mute
; _Video_Open
; _Video_Pause
; _Video_Play
; _Video_Resume
; _Video_Seek
; _Video_Status  ==> Adicionado
; _Video_Step    ==> Adicionado
; _Video_Stop    ==> Adicionado
; _Video_TimePos
; _Video_Volume  ==> Adicionado
; _RandomStr
; _MSToHMS
; _mciDeviceExists
; _mciListDevices
; _mciSendString
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _Video_Close
; Description....: Close a video.
; Syntax.........: _Video_Close($sAlias)
; Parameters ....: $sAlias    - Alias name returned by _Video_Open.
; Return values .: Success    - Return 1 and sets Alias name to "".
;                  Failure    - Return 0 and @error 1~2
;                               @error 1 = Invalid Alias
;                               @error 2 = MCI failed to close video
; Author ........: smashly
Func _Video_Close(ByRef $sAlias)
    If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0)
    If _mciSendString("close " & $sAlias) = 0 Then
        $sAlias = ""
        Return SetError(0, 0, 1)
    Else
        Return SetError(2, 0, 0)
    EndIf
EndFunc   ;==>_Video_Close
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _Video_Dimension
; Description....: Retrieves the Width and Height of the source video.
; Syntax.........: _Video_Dimension($sFile)
; Parameters ....: $sFile     - The full path to video file.
; Return values .: Success    - Returns an array. array[0] = Width, array[1] = Height
;                  Failure    - Return 0 and @error 1~3
;                               @error 1 = File doesn't exist.
;                               @error 2 = MCI failed to open the video file.
;                               @error 3 = MCI failed to get the source video dimensions.
; Author ........: smashly
Func _Video_Dimension($sFile)
    Local $iRet, $sVID, $aTmp
    If Not FileExists($sFile) Then Return SetError(1, 0, 0)
    $sVID = _RandomStr()
    $iRet = _mciSendString("open " & FileGetShortName($sFile) & " alias " & $sVID)
    If $iRet <> 0 Then Return SetError(2, 0, 0)
    $iRet = _mciSendString("where " & $sVID & " source", 255)
    If $iRet = "" Then
        _mciSendString("close " & $sVID)
        Return SetError(3, 0, 0)
    EndIf
    _mciSendString("close " & $sVID)
    $aTmp = StringSplit($iRet, Chr(32))
    $aTmp[1] = $aTmp[$aTmp[0]]
    $aTmp[0] = $aTmp[$aTmp[0] - 1]
    ReDim $aTmp[2]
    Return $aTmp
EndFunc   ;==>_Video_Dimension
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _Video_FrameRate
; Description....: Close a video.
; Syntax.........: _Video_FrameRate($sAlias)
; Parameters ....: $sAlias    - Alias name returned by _Video_Open.
; Return values .: Success    - Returns the Frames Per Second of the video.
;                  Failure    - Return 0 and @error 1
;                               @error 1 = Invalid Alias
; Author ........: smashly
Func _Video_FrameRate($sAlias)
    If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0)
    Return _mciSendString("status " & $sAlias & " nominal frame rate", 255) / 1000
EndFunc   ;==>_Video_FrameRate
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _Video_Length
; Description....: Get the time length of a video in Milliseconds or Hours, Minutes, Seconds (HH:MM:SS)
; Syntax.........: _Video_Length($sAlias[, $iTime = 0])
; Parameters ....: $sAlias    - Alias name returned by _Video_Open
;                  $iTime     - 0 Return time lenth in Hours, Minutes, Seconds (HH:MM:SS)
;                             - 1 Return time lenth in Milliseconds.
; Return values .: Success    - Return time length in Milliseconds or Hours, Minutes, Seconds (HH:MM:SS)
;                  Failure    - Return 0 and @error 1
;                               @error 1 = Invalid Alias
; Author ........: smashly
Func _Video_Length($sAlias, $iTime = 0)
    Local $iMS
    If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0)
    _mciSendString("set " & $sAlias & " time format ms")
    $iMS = _mciSendString("status " & $sAlias & " length", 255)
    If Not $iTime Then Return _MSToHMS($iMS)
    If $iTime Then Return $iMS
EndFunc   ;==>_Video_Length
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _Video_Mute
; Description....: Turn off/on the audio in a video.
; Syntax.........: _Video_Mute($sAlias[, $iMute = 0])
; Parameters ....: $sAlias    - Alias name returned by _Video_Open.
;                  $iAudio    - 0 = Audio On, 1 = Audio Off
; Return values .: Success    - Return 1 and @error 0
;                  Failure    - Return 0 and @error 1~2
;                               @error 1 = Invalid Alias
;                               @error 2 = MCI failed to turn the video audio off/on
; Author ........: smashly
Func _Video_Mute($sAlias, $iMute = 0)
    Local $iRet, $iAM = "on"
    If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0)
    If $iMute Then $iAM = "off"
    $iRet = _mciSendString("set " & $sAlias & " audio all " & $iAM)
    If $iRet = 0 Then
        Return SetError(0, 0, 1)
    Else
        Return SetError(2, 0, 0)
    EndIf
EndFunc   ;==>_Video_Mute
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _Video_Open
; Description ...: Opens a Video file ready for use with other _Video_xxxx functions.
; Syntax.........: _Video_Open($sFile, $hWnd, $iX, $iY, $iW, $iH[, $sDevice = ""])
; Parameters ....: $sFile     - The full path to video file.
;                  $hWnd      - Handle to a window or control that the video will be displayed on
;                  $iX        - Left position of the video.
;                  $iY        - Top position of the video.
;                  $iW        - Width of the video.
;                  $iH        - Height of the video.
;                  $sDevice   - MCI Device type to play video with. (See Remarks for more info)
; Return values .: Success    - Return an Alias name for use with other _Video_xxxx functions.
;                  Failure    - Return an empty String "" and @error 1~5
;                               @error 1 = File doesn't exist
;                               @error 2 = Window or Control handle not valid.
;                               @error 3 = Invalid MCI Device type specified.
;                               @error 4 = MCI failed to open video file
;                               @error 5 = MCI failed window for video.
;                               @error 5 = MCI failed to put video at the deignated location.
;
; Remarks .......: If your having trouble with avi playback (eg; playing fast, slow, choppy or no audio)
;                  or a video won't play but it plays fine in any other player ...
;                  Then set the $sDevice parameter to "MPEGVideo"
;                  If the $sDevice parameter is left blank then windows will decide which MCI Device type
;                  to use.
;                  Most current day avi/wmv/mp4 formats dont play properly or at all when windows selects
;                  the mci device type to use.
;                  Windows would default use "AVIVideo" MCI Device type to play avi with mci.
;                  When you specify "MPEGVideo" for an avi and mci fails it then uses the windows native
;                  chain of codecs that would be used by any other player not using mci ;)
;                  Because of this behaviour you can usually play almost any type of video that normally
;                  fails when using mci just by specifying "MPEGVideo" mci device type.
;                  For playing video on an autoit gui then be sure to add the $WS_CLIPCHILDREN style
;                  to your Gui. This will keep the Video dislpayed on your Gui all the time.
; PT-BR :: Observações:
; ... Se você tiver problemas com a reprodução avi (por exemplo, jogar rápido, lento, intermitente ou sem áudio)
; Ou um vídeo não será reproduzido, mas reproduz bem em qualquer outro player ...
; Em seguida, defina o parâmetro $sDevice como "MPEGVideo"
; Se o parâmetro $sDevice for deixado em branco, o Windows decidirá qual tipo de dispositivo MCI usar.
; A maioria dos formatos atuais de avi / wmv / mp4 não jogam corretamente ou quando o Windows seleciona
; O tipo de dispositivo mci a ser usado.
; Windows usaria padrão "AVIVideo" tipo de dispositivo MCI para jogar avi com mci.
; Quando você especifica "MPEGVideo" para um avi e mci falha, em seguida, usa as janelas nativas
; Cadeia de codecs que seriam usados ??por qualquer outro jogador que não usasse mci;)
; Devido a esse comportamento, você geralmente pode reproduzir quase qualquer tipo de vídeo que normalmente
; Falha ao usar mci apenas especificando "MPEGVideo" tipo de dispositivo mci.
; Para reproduzir o vídeo em um gui autoit, então certifique-se de adicionar o estilo $WS_CLIPCHILDREN
; Para o seu Gui. Isto manterá o vídeo dislpayed em seu Gui todo o tempo.
;
; Author ........: smashly
Func _Video_Open($sFile, $hWnd, $iX, $iY, $iH, $iW, $sDevice = "MPEGVideo")
    Local $sVID, $gId, $iRet, $sDT = ""
    $sDevice = "MPEGVideo"
    If Not FileExists($sFile) Then Return SetError(1, 0, "")
    If Not IsHWnd($hWnd) Then Return SetError(2, 0, "")
    If $sDevice <> "" Then
        If Not _mciDeviceExists($sDevice) Then Return SetError(3, 0, "")
        $sDT = " type " & $sDevice
    EndIf
    $gId = Dec(StringTrimLeft($hWnd, 2))
    $sVID = _RandomStr()
    $iRet = _mciSendString("open " & FileGetShortName($sFile) & " alias " & $sVID & $sDT)
    If $iRet <> 0 Then Return SetError(4, 0, "")
    $iRet = _mciSendString("window " & $sVID & " handle " & $gId)
    If $iRet <> 0 Then
        _mciSendString("close " & $sVID)
        Return SetError(5, 0, "")
    EndIf
    $iRet = _mciSendString("put " & $sVID & " destination at " & $iX & " " & $iY & " " & $iH & " " & $iW)
    If $iRet <> 0 Then
        _mciSendString("close " & $sVID)
        Return SetError(6, 0, "")
    EndIf
    Return SetError(0, 0, $sVID)
EndFunc   ;==>_Video_Open
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _Video_Pause
; Description....: Pause a Video at the current playing position.
; Syntax.........: _Video_Pause($sAlias)
; Parameters ....: $sAlias    - Alias name returned by _Video_Open.
; Return values .: Success    - Return 1 and @error 0
;                  Failure    - Return 0 and @error 1~2
;                               @error 1 = Invalid Alias
;                               @error 2 = Failed to pause video.
; Author ........: smashly
Func _Video_Pause($sAlias)
    Local $iRet
    If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0)
    $iRet = _mciSendString("pause " & $sAlias)
    If $iRet = 0 Then
        Return SetError(0, 0, 1)
    Else
        Return SetError(2, 0, 0)
    EndIf
EndFunc   ;==>_Video_Pause
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _Video_Play
; Description....: Plays a Video from the current position.
; Syntax.........: _Video_Play($sAlias[, $iMode = 0])
; Parameters ....: $sAlias    - Alias name returned by _Video_Open.
;                  $iMode     - 0 play video on the window or control as specified in _Video_Open
;                             - 1 play video in Fullscreen mode.
; Return values .: Success    - Return 1 and @error 0
;                  Failure    - Return 0 and @error 1~2
;                               @error 1 = Invalid Alias
;                               @error 2 = MCI failed to play video.
; Author ........: smashly
Func _Video_Play($sAlias, $iMode = 0)
    Local $iRet
    If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0)
    If _Video_TimePos($sAlias, 1) = _Video_Length($sAlias, 1) Then _Video_Seek($sAlias, "start")
    If $iMode Then
        $vRet = _mciSendString("play " & $sAlias & " fullscreen")
    Else
        $iRet = _mciSendString("play " & $sAlias)
    EndIf
    If $iRet = 0 Then
        Return SetError(0, 0, 1)
    Else
        Return SetError(1, 0, 0)
    EndIf
EndFunc   ;==>_Video_Play
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _Video_Resume
; Description....: Resume playing a video after pausing.
; Syntax.........: _Video_Resume($sAlias)
; Parameters ....: $sAlias    - Alias name returned by _Video_Open.
; Return values .: Success    - Return 1 and @error 0
;                  Failure    - Return 0 and @error 1~2
;                               @error 1 = Invalid Alias
;                               @error 2 = MCI failed to resume video.
; Author ........: smashly
Func _Video_Resume($sAlias)
    Local $iRet
    If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0)
    $iRet = _mciSendString("resume " & $sAlias)
    If $iRet = 0 Then
        Return SetError(0, 0, 1)
    Else
        Return SetError(2, 0, 0)
    EndIf
EndFunc   ;==>_Video_Resume
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _Video_Seek
; Description....: Seek a video to the specified time position.
; Syntax.........: _Video_Seek($sAlias, $iTime)
; Parameters ....: $sAlias    - Alias name returned by _Video_Open.
;                  $iTime     - Time to Seek. Can be Millisecons or HH:MM:SS or "start" or "end"
; Return values .: Success    - Return 1 and @error 0
;                  Failure    - Return 0 and @error 1~3
;                               @error 1 = Invalid Alias
;                               @error 2 = Invalid time format.
;                               @error 3 = MCI Seek error
; Author ........: smashly
Func _Video_Seek($sAlias, $iTime)
    Local $iMS, $aTime, $iRet
    If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0)
    If StringInStr($iTime, ":") Then
        $aTime = StringSplit($iTime, ":")
        If $aTime[0] <> 3 Then Return SetError(2, 0, 0)
        $iMS = 1000 * ((3600 * $aTime[1]) + (60 * $aTime[2]) + $aTime[3])
    ElseIf StringIsInt($iTime) Or $iTime = "start" Or $iTime = "end" Then
        $iMS = $iTime
    Else
        Return SetError(2, 0, 0)
    EndIf
    _mciSendString("set " & $sAlias & " time format ms")
    $iRet = _mciSendString("seek " & $sAlias & " to " & $iMS)
    If $iRet = 0 Then
        Return SetError(0, 0, 1)
    Else
        Return SetError(3, 0, 0)
    EndIf
EndFunc   ;==>_Video_Seek
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _Video_Status
; Description....: Get a status status message from a video device.
; Syntax.........: _Video_Status($sAlias[, $sQuery = "mode"])
; Parameters ....: $sAlias    - Alias name returned by _Video_Open
;                  $sQuery    - What to get the status of:
;                               "audio" - returns the "on" or "off"
;                               "mode"  - returns "paused", "playing" and "stopped"
; Return values .: Success    - Returns a Status message from the video device.
;                  Failure    - Return 0 and @error 1
;                               @error 1 = Invalid Alias
;                               @error 2 = Invalid query (To be implemented)
; Author ........: smashly
Func _Video_Status($sAlias, $sQuery = "mode")
    If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0)
    ;; error check for the $sQuery goes here
    Return _mciSendString("status " & $sAlias & " " & $sQuery, 255)
EndFunc   ;==>_Video_Status
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _Video_Step
; Description....: Step a video forwards or backwards by a number of frames.
; Syntax.........: _Video_Step($sAlias, $iFrames)
; Parameters ....: $sAlias    - Alias name returned by _Video_Open
;                  $iFrames   - The number of frames to step, use negative numbers to step backwards.
; Return values .: Success    - Returns 1 and @error 0
;                  Failure    - Return 0 and @error 1~3
;                               @error 1 = Invalid Alias
;                               @error 2 = Invalid frames
;                               @error 3 = MCI Step error
; Author ........: smashly
Func _Video_Step($sAlias, $iFrames)
    Local $iRet
    If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0)
    If StringRegExp(StringReplace($iFrames, "-", ""), '\D', 0) Then Return SetError(2, 0, 0)
    $iRet = _mciSendString("step " & $sAlias & " by " & $iFrames)
    If $iRet = 0 Then
        Return SetError(0, 0, 1)
    Else
        Return SetError(3, 0, 0)
    EndIf
EndFunc   ;==>_Video_Step
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _Video_Stop
; Description....: Stop a Video playing. (seeks video to start)
; Syntax.........: _Video_Stop($sAlias)
; Parameters ....: $sAlias    - Alias name returned by _Video_Open.
; Return values .: Success    - Return 1 and @error 0
;                  Failure    - Return 0 and @error 1~2
;                               @error 1 = Invalid Alias
;                               @error 2 = Failed to stop or seek
; Author ........: smashly
Func _Video_Stop($sAlias)
    Local $iRet, $iRet2
    If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0)
    $iRet = _Video_Seek($sAlias, "start")
    $iRet2 = _mciSendString("stop " & $sAlias)
    If $iRet = 0 And $iRet2 = 0 Then
        Return SetError(0, 0, 1)
    Else
        Return SetError(2, 0, 0)
    EndIf
EndFunc   ;==>_Video_Stop
;==========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _Video_TimePos
; Description....: Get the time poition of a video in Milliseconds or Hours, Minutes, Seconds (HH:MM:SS)
; Syntax.........: _Video_TimePos($sAlias[, $iTime = 0])
; Parameters ....: $sAlias    - Alias name returned by _Video_Open.
;                  $iTime     - 0 Return time lenth in Hours, Minutes, Seconds (HH:MM:SS)
;                             - 1 Return time lenth in Milliseconds.
; Return values .: Success    - Return time position in Milliseconds or Hours, Minutes, Seconds (HH:MM:SS)
;                  Failure    - Return 0 and @error 1
;                               @error 1 = Invalid Alias
; Author ........: smashly
Func _Video_TimePos($sAlias, $iTime = 0)
    Local $iMS
    If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0)
    _mciSendString("set " & $sAlias & " time format ms")
    $iMS = _mciSendString("status " & $sAlias & " position", 255)
    If Not $iTime Then Return _MSToHMS($iMS)
    If $iTime Then Return $iMS
EndFunc   ;==>_Video_TimePos
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _Video_Volume
; Description....: Turn the video audio volume up or down.
; Syntax.........: _Video_AudioVolume($sAlias[, $iVolume = 100])
; Parameters ....: $sAlias    - Alias name returned by _Video_Open.
;                  $iVolume   - 0 = Min, 100 = Max
; Return values .: Success    - Return 1 and @error 0
;                  Failure    - Return 0 and @error 1~2
;                               @error 1 = Invalid Alias
;                               @error 2 = Invalid Volume
;                               @error 3 = MCI failed to set volume
; Author ........: smashly
;~ Func _Video_Volume($sAlias, $iVolume = 100)
;~  Local $iRet, $iVol
;~  If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0)
;~  If StringRegExp($iVolume, '\D', 0) Then Return SetError(2, 0, 0)
;~  If $iVolume >= 100 Then
;~      $iVol = 1000
;~  ElseIf $iVolume <= 0 Then
;~      $iVol = 0
;~  ElseIf $iVolume > 0 And $iVolume < 100 Then
;~      $iVol = $iVolume * 10
;~  EndIf
;~  $iRet = _mciSendString("setaudio " & $sAlias & " volume to " & $iVol)
;~  If $iRet = 0 Then
;~      Return SetError(0, 0, 1)
;~  Else
;~      Return SetError(3, 0, 0)
;~  EndIf
;~ EndFunc   ;==>_Video_Volume

;By PedroWarlock
Func _Video_Volume($sAlias, $iVol = 100, $sName = "")

    ;Declare variables
    Local $iRet

    If $iVol >= 0 And $iVol <= 100 Then
        $iVol *= 10 ; vol goes here from 0 - 1000
    EndIf

    Switch $sName
        Case "LEFT"
            $iRet = _mciSendString("setaudio " & $sAlias & " left volume to " & $iVol & " wait")

        Case "RIGHT"
            $iRet = _mciSendString("setaudio " & $sAlias & " right volume to " & $iVol & " wait")

        Case "BASS"
            $iRet = _mciSendString("setaudio " & $sAlias & " bass to " & $iVol & " wait")

        Case "TREBLE"
            $iRet = _mciSendString("setaudio " & $sAlias & " treble to " & $iVol & " wait")

        Case Else ; default 0 ""
            $iRet = _mciSendString("setaudio " & $sAlias & " volume to " & $iVol & " wait")
    EndSwitch

    ;return
    If $iRet = 0 Then
        Return 1
    Else
        Return SetError(1, 0, 0)
    EndIf
EndFunc   ;==>_Video_Volume
; =========================================================================================================
;==========================================================================================================
; Internal use functions beyond this point / Funções de uso interno além deste ponto
;==========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _mciDeviceExists
; Description....: Check if a MCI Device type exists
; Syntax.........: _mciDeviceExists($sDevice)
; Parameters ....: $sDevice   - Name of MCI Device type to check for
; Return values .: Success    - Return 1 if MCI Device type exists and @error 0
;                  Failure    - Return 0 if MCI Device type does not exist and @error 1~2
;                               @error 1 = No matching MCI Device type found.
;                               @error 2 = Failed to list any MCI Device types
; Author ........: smashly
Func _mciDeviceExists($sDevice)
    Local $aDT = _mciListDevices()
    If @error Then Return SetError(2, 0, 0)
    For $idx = 1 To $aDT[0]
        If $sDevice = $aDT[$idx] Then Return SetError(0, 0, 1)
    Next
    Return SetError(1, 0, 0)
EndFunc   ;==>_mciDeviceExists
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _mciListDevices
; Description....: List all found MCI Device types in an array
; Syntax.........: _mciListDevices()
; Parameters ....: None
; Return values .: Success    - Return 1D array of found MCI Device types and @error 0
;                               array[0] Number of MCI Device types found
;                               array[n] MCI Device type name
;                  Failure    - Return empty 1D array and @error 1
; Author ........: smashly
Func _mciListDevices()
    Local $iMD, $sTmp
    $iMD = _mciSendString("sysinfo all quantity", 255)
    If StringIsInt($iMD) Then
        For $idx = 1 To $iMD
            $sTmp &= _mciSendString("sysinfo all name " & $idx, 255) & Chr(0)
        Next
        Return SetError(0, 0, StringSplit(StringTrimRight($sTmp, 1), Chr(0)))
    EndIf
    Return SetError(1, 0, StringSplit($sTmp, Chr(0)))
EndFunc   ;==>_mciListDevices
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _MSToHMS
; Description....: Converts Milliseconds to Hours, Minutes, Seconds
; Syntax.........: _MSToHMS($iMS)
; Parameters ....: $iMS       - Milliseconds to convert
; Return values .: Success    - Returns Hours, Minutes, Seconds (HH:MM:SS)
; Author ........: smashly
Func _MSToHMS($iMS)
    Local $iHours = 0, $iMins = 0, $iSecs = 0
    If Number($iMS) > 0 Then
        $iMS = Round($iMS / 1000)
        $iHours = Int($iMS / 3600)
        $iTicks = Mod($iMS, 3600)
        $iMins = Int($iMS / 60)
        $iSecs = Round(Mod($iMS, 60))
        Return StringFormat("%02i:%02i:%02i", $iHours, $iMins, $iSecs)
    EndIf

    Return StringFormat("%02i:%02i:%02i", $iHours, $iMins, $iSecs)
EndFunc   ;==>_MSToHMS
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _RandomStr
; Description....: Creates a random string
; Syntax.........: _RandomStr([$iLen = 10])
; Parameters ....: $iLen      - Length of string to return
; Return values .: Success    - Returns a string of random letters (a~z)
; Author ........: RazerM
Func _RandomStr($iLen = 10)
    Local $sTmp = ''
    For $i = 1 To $iLen
        $sTmp &= Chr(Random(97, 122, 1))
    Next
    Return $sTmp
EndFunc   ;==>_RandomStr
; =========================================================================================================
; #FUNCTION# ==============================================================================================
; Name...........: _mciSendString
; Description....:
; Syntax.........: _mciSendString($string[, $iLen = 0])
; Parameters ....: $string
;                  $iLen
; Return values .:
; Author ........: RazerM
Func _mciSendString($string, $iLen = 0)
$iRet = DllCall("winmm.dll", "int", "mciSendStringA", "str", $string, "str", "", "long", $iLen, "long", 0); Only works if it is the dll of the system32 folder
;$iRet = DllCall(@ScriptDir & "\winmm.dll", "int", "mciSendStringA", "str", $string, "str", "", "long", $iLen, "long", 0); With the dll in the program folder does not work!
    If Not @error Then Return $iRet[2]
EndFunc   ;==>_mciSendString
; =========================================================================================================
#endregion ==> UDF Vídeo By: smashly

 

Edited by Belini
Link to comment
Share on other sites

Link to comment
Share on other sites

I would think it's the way you tried, but if that doesn't work, i don't really know.

Keep bumping this thread everyday (min.24h), maybe someone else has an idea.

Spoiler

Renamer - Rename files and folders, remove portions of text from the filename etc.

GPO Tool - Export/Import Group policy settings.

MirrorDir - Synchronize/Backup/Mirror Folders

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

String Trigger - Triggers pasting text or applications or internet links on specific strings.

Inconspicuous - Hide files in plain sight, not fully encrypted.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

IUIAutomation - Topic with framework and examples

Au3Record.exe

Link to comment
Share on other sites

Thanks for the tip @careca

Does anyone know in which topic was posted to UDF video.au3 made by @smashly, I want to get info there!

Edited by Belini
Link to comment
Share on other sites

nice in theory, but posting there will probably be less help.

 

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Link to comment
Share on other sites

Really posting on this topic will not solve, I thought I had a topic that was just about UDF video.au3!

Link to comment
Share on other sites

It's a shame I can not use the UDF so good these after the last update of windows 10 because it crashes after playing several videos in a row and I do not know how to fix!

Edited by Belini
Link to comment
Share on other sites

Did you do any further test / investignation ?

 

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 *

 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE * IE on Windows 11

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2023-04-24

Link to comment
Share on other sites

The test I did was restore the system to before the windows update and everything went back to normal, other people who use my jukebox program also had the same problem after doing the last update of windows 10!

Link to comment
Share on other sites

How weird is that!? You should try to pinpoint the update, by installing one kb at a time, making restore points before install.

Spoiler

Renamer - Rename files and folders, remove portions of text from the filename etc.

GPO Tool - Export/Import Group policy settings.

MirrorDir - Synchronize/Backup/Mirror Folders

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

String Trigger - Triggers pasting text or applications or internet links on specific strings.

Inconspicuous - Hide files in plain sight, not fully encrypted.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

IUIAutomation - Topic with framework and examples

Au3Record.exe

Link to comment
Share on other sites

post your full test script. i'm not willing to redo any work in order to test. did you make sure you have encased the entire path in quotes if there is a space in it? what other testing other than, 'I don't know' have you tried?

My resources are limited. You must ask the right questions

 

Link to comment
Share on other sites

Yes I tried placing quotation marks and I also think that this is not the reason for the error because even in the new version of windows 10 the videos play but after a while playing several videos in a row is black screen and the program hangs there I can only close by manager!

I will change to play several videos in a row in the script I posted and then I post again here!

Link to comment
Share on other sites

9 minutes ago, Belini said:

after a while playing several videos in a row

what file type(s)?  does the behavior exist if you play the same video many times in a row?  Earlier it was audio, does this behavior exist if you play multiple mp3s in a row in this manner?

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Link to comment
Share on other sites

I just tested with .mp4 files that are the files I use, I'm going to do these tests!

 

Link to comment
Share on other sites

After doing several tests I solved the problem using a modified winmm.dll that I downloaded here http://steamcommunity.com/app/354430/discussions/0/412447524178229107/ and this dll accepts to be executed direct from the program folder

Follow the link of the dll's and script for those who have the same problem and want to download:https://mega.nz/#!8Vky2Iza!m8VV2l5LPTHewhS3jRRkl4S7I4o5r8qkCs6X-C4s22g

Thanks to everyone who tried to help me!

 

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...