MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Abrir ficheiros em loop

    Compartilhe

    cpampas
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 71
    Registrado : 27/10/2013

    [Resolvido]Abrir ficheiros em loop

    Mensagem  cpampas em 19/7/2018, 11:15

    Bom dia,
    Suponho que conhecem a API de Dev Ashish para executar ficheiros

    access.mvps.org/access/api/api0018.htm  
    [Não são permitidos links externos, colocar desta forma]


    o que eu tenho é um loop  com 3 ficheirose pretendia que ao chegar ao final do primeiro, iniciasse, o segundo e o seguinte, etc.
    O problema é que o meu loop continua enquanto o primeiro ficheiro é executado, e por isso so ouvir o ultimo


    Código:
    If horaAgora > horaAcao And !jaEsta = 0 Then
             strPath = DLookup("[musicaPath]", "tblMusicas", "[musicaID]= " & musicaID)
                For n = 1 To !repeat
                   fHandleFile strPath, WIN_MIN ' [font=Arial Black]queria que aqui parasse a execuçao do codigo ate terminar a musica[/font]
                Next n
                       .Edit
                          !jaEsta = -1
                       .Update
         End If
    avatar
    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 290
    Registrado : 28/06/2010

    Re: [Resolvido]Abrir ficheiros em loop

    Mensagem  Marco Messa em 31/7/2018, 19:21

    O código realmente continua pois não há nada que indique que ele deva esperar, já que a função fHandleFile apenas se encarrega de chamar a aplicação registrada para executar o arquivo informado.

    O que você pode fazer é pegar a duração da música e fazer a aplicação esperar até que uma termine para continuar e tocar a outra, usando as seguintes funções:

    Código:

    Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64 Bit Systems

    ' ATENÇÃO: Referencie a biblioteca "Microsoft Shell Controls And Automation"
    Public Function GetMediaFileLength(ByVal strPath As String) As String
        Dim objShell As New Shell
        Dim objFolder As Folder3
        Dim objFile As FolderItem
        Dim strFolderPath As String, strFileName As String
        
        GetMediaFileLength = "00:00:00"
        
        If strPath = "" Then
            MsgBox "No path provided"
            Exit Function
        End If
        
        strFolderPath = Left(strPath, InStrRev(strPath, "\") - 1)
        strFileName = Mid(strPath, InStrRev(strPath, "\") + 1)
        
        Set objFolder = objShell.Namespace(strFolderPath)
        
        For Each objFile In objFolder.Items
            If objFile.Name = strFileName Then
                GetMediaFileLength = objFolder.GetDetailsOf(objFile, 27)
            End If
        Next objFile
    End Function

    E aplicar no seu trecho de código:

    Código:

    If horaAgora > horaAcao And !jaEsta = 0 Then
        strPath = DLookup("[musicaPath]", "tblMusicas", "[musicaID]= " & musicaID)
            For n = 1 To !Repeat
                lngAguardar = TimeValue(GetMediaFileLength(strPath)) * 86400000 'Converte a duração da música em milisegundos
                fHandleFile strPath, WIN_MIN 'Executa o arquivo de música
                Call Sleep(lngAguardar) 'Faz a aplicação aguardar o tempo de duração da música
            Next n

            .Edit
               !jaEsta = -1
            .Update
    End If

    ATENÇÂO: A aplicação não responderá durante o tempo de espera da função Sleep e não importa se o player de música for fechado no meio da música, ainda assim a duração será respeitada.


    Última edição por Marco Messa em 31/7/2018, 19:25, editado 1 vez(es) (Razão : Esqueci de converter o tempo em milisegundos.)


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    cpampas
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 71
    Registrado : 27/10/2013

    Re: [Resolvido]Abrir ficheiros em loop

    Mensagem  cpampas em 3/8/2018, 17:02

    Marco,
    Muito obrigado, soluçao genial
    Abraço

      Data/hora atual: 19/8/2018, 22:44