MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


2 participantes

    [Resolvido]Abrir ficheiros em loop

    avatar
    cpampas
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Abrir ficheiros em loop Empty [Resolvido]Abrir ficheiros em loop

    Mensagem  cpampas 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
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Abrir ficheiros em loop Empty Re: [Resolvido]Abrir ficheiros em loop

    Mensagem  Marco Messa 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) (Motivo da edição : Esqueci de converter o tempo em milisegundos.)


    .................................................................................
    Tea with me that I book your face Cool
    avatar
    cpampas
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Abrir ficheiros em loop Empty Re: [Resolvido]Abrir ficheiros em loop

    Mensagem  cpampas 3/8/2018, 17:02

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

    Conteúdo patrocinado


    [Resolvido]Abrir ficheiros em loop Empty Re: [Resolvido]Abrir ficheiros em loop

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 7/11/2024, 17:35