Comment jouer sur son sur vbs

Résolu
brice-eve Messages postés 109 Statut Membre -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour,

depuis peu je me suis mis a développer un programme en .vbs
sur ce programme je souhaite jouer une musique qui se lancera des que le programme ce lance sauf que ...

j'ai chercher partout sur internet g troué quelques codes comme :

strSoundFile = "C:\Users\fichiers_test\"

Set objShell = CreateObject("Wscript.Shell")

strCommand = "sndrec32 /play /close " & chr(34) & strSoundFile & chr(34)

objShell.Run strCommand, 0, True


mais ils ne marchent pas.

plus tard g appris que sndrec32 n'existais plus a partir de windows vista donc g encore chercher un autre code pour jouer du son mais impossible de trouver.

merci d'avance pour votre précieuse aide

3 réponses

  1. cs_PaTaTe Messages postés 1471 Date d'inscription   Statut Contributeur Dernière intervention   503
     
    Ca fonctionnait sous Vista mais plus maintenant

    Personnellement, j'utiliserais un lecteur de musique externe (en ligne de comande) comme ffplay ou mplayer
    0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Voir ce programme:

    https://codes-sources.commentcamarche.net/source/101004-ecouter-dj-buzz-radio-avec-djbuzzradio-vbs

    en changeant cette ligne et en mettant le chemin du fichier audio

    Call Play(DJBuzzRadio)


    Call Play (Chemin audio) 


    je l'ai fait cela fonctionne très bien pour mp3, wav et wma
    0
    1. brice-eve Messages postés 109 Statut Membre 260
       
      merci je test maintentant
      0
    2. brice-eve Messages postés 109 Statut Membre 260
       
      rebonjour allors j'ai testé votre programe mais il ne foncionne pas mais j'ai réusi a trouvé la solution tout seul :

      Dim oPlayer
      Set oPlayer = CreateObject("WMPlayer.OCX")

      oPlayer.URL = "chemain d'acces"
      oPlayer.controls.play
      While oPlayer.playState <> 1 ' 1 = Stopped
      WScript.Sleep 100
      Wend
      oPlayer.close


      voila merci pour votre aide
      0
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Le programme que j'ai indiqué fonctionne très bien.
    La preuve, voici le programme modifié par mes soins qui permet de choisir un fichier audio et de l’arrêter à la demande:

    mais j'ai réusi a trouvé la solution tout seul :

    on s'apercoit que ton code ressemble étrangement au

    Sub Play(URL)

    Dim Chemin 
    Call AskQuestion()
    '*****************************************************************************
    Sub Play(URL)
        Dim Sound
        Set Sound = CreateObject("WMPlayer.OCX")               
        Sound.URL = URL
        Sound.settings.volume = 100                               
        Sound.Controls.play                                     
        do while Sound.currentmedia.duration = 0                
            wscript.sleep 100                                       
        loop                                                    
        wscript.sleep (int(Sound.currentmedia.duration)+1)*1000 
    End Sub
    Sub AskQuestion()
        Dim Question,MsgFR
        MsgFR = "Voulez-vous ouvrir un fichier audio?" & vbcr & "Oui = Pour écouter" & vbcr & "Non = Pour arrêter" & vbcr & String(50,"*")
       Question = MsgBox(MsgFR,vbYesNO+vbQuestion+vbSystemModal,Title)
        If Question = VbYes Then
       Call chercher()'chercher le fichier audio
       Call Play (Chemin)'jouer
        End If
        If Question = VbYes Then 
            MsgBox  "Il y a une autre instance en cours d'exécution !"
           WScript.Quit()
        End If
        If Question = VbNo  Then
            Call Kill("wscript.exe")
        End If
        If Question = VbNo  Then
            Call Kill("wscript.exe")
        End If
    End Sub
    '*****************************************************************************
    'Fonction pour ajouter les doubles quotes dans une variable
    Function DblQuote(Str)
        DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '******************************************************************************
    Function CommandLineLike(ProcessPath)   
        ProcessPath = Replace(ProcessPath, "\", "\\")   
        CommandLineLike = "'%" & ProcessPath & "%'"   
    End Function
    '******************************************************************************
    Sub Kill(MyProcess)
        Dim Titre,colItems,objItem,Processus,Question
        Titre = " Processus "& DblQuote(MyProcess) &" en cours d'exécution "
        Set colItems = GetObject("winmgmts:").ExecQuery("Select * from Win32_Process " _
        & "Where Name like '%"& MyProcess &"%' AND commandline like " & CommandLineLike(WScript.ScriptFullName) & "",,48)
        For Each objItem in colItems
            objItem.Terminate(0)' Tuer ce processus
        Next
    End Sub
    '******************************************************************************
    Sub chercher()
    sIniDir = "C:\Windows\*" 
    sFilter = "Fichier MP3 (*.mp3)|*mp3|Fichier Wave(*.wav)|*wav|Fichier WMA(*.wma)|*wma|"
    sTitle = "GetFileDlg by omen999 2014 - http://omen999.developpez.com" 
    rep = GetFileDlgEx(Replace(sIniDir,"\","\\"),sFilter,sTitle) 
    Chemin=rep & vbcrlf & Len(rep)
    Chemin= left(Chemin , len(Chemin)-2)
    'Chemin=InputBox("Copiez pour mettre le chemin dans le presse-papier", "Chercher chemin fichier", Chemin)
    End Sub
    Function GetFileDlgEx(sIniDir,sFilter,sTitle) 
      Set oDlg = CreateObject("WScript.Shell").Exec("mshta.exe ""about:<object id=d classid=clsid:3050f4e1-98b5-11cf-bb82-00aa00bdce0b></object><script>moveTo(0,-9999);eval(new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(0).Read("&Len(sIniDir)+Len(sFilter)+Len(sTitle)+41&"));function window.onload(){var p=/[^\0]*/;new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(p.exec(d.object.openfiledlg(iniDir,null,filter,title)));close();}</script><hta:application showintaskbar=no />""") 
      oDlg.StdIn.Write "var iniDir='" & sIniDir & "';var filter='" & sFilter & "';var title='" & sTitle & "';" 
      GetFileDlgEx = oDlg.StdOut.ReadAll 
    End Function
    

    0
    1. cs_PaTaTe Messages postés 1471 Date d'inscription   Statut Contributeur Dernière intervention   503
       
      Etrange, la balise code n'est pas effective quand on affiche le poste sur Chrome Android ; Sous Windows, pas de soucis.

      EDIT : Pas d'erreur dans le code, c'était un problème de copier/coller, désolé :)

      Par contre, pour le répertoire d'initialisation, il faut éviter autant que faire se peut de mettre des chemin en dur. Ici C:\Windows. perso, ce répertoire n'existe pas ^^ Mieux vaut utiliser la boite de dialogue invitant l'utilisateur de choisir son répertoire.
      0
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > cs_PaTaTe Messages postés 1471 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bonjour PATATE

        Mieux vaut utiliser la boite de dialogue invitant l'utilisateur de choisir son répertoire.

        C'est ce que fait le code, il ouvre une openfiledialog. J'ai mis ce chemin pour le début de la recherche. Tu peux l'enlever et tu seras sur le dernier fichier ouvert. Sinon tu le personnalises. Nous sommes sur un forum de développeur, donc capable de l'adapter, ce forum est fait pour cela, n'est-il pas?

        cdlt

        Bon WE

        @+ Le Pivert
        0