IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Déclenchement d'un son avant lancement d'un 'process' se fait entendre APRES que ce process soit terminé


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 158
    Par défaut Déclenchement d'un son avant lancement d'un 'process' se fait entendre APRES que ce process soit terminé
    Bonjour,
    Les sons de mon interface sont gérés par un module de classe

    J'ai donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Public Class UISound
        Public Shared WithEvents musicPlayer As New WMPLib.WindowsMediaPlayer
        Public Shared Sub PlayMusic(ByVal url As String)
            musicPlayer = New WMPLib.WindowsMediaPlayer
            musicPlayer.URL = url
            volumeMusic()
            musicPlayer.controls.play()
        End Sub
        Public Shared Sub volumeMusic()
            musicPlayer.settings.volume = My.Settings.music_volume / 10
        End Sub    
        Public Shared Sub musicPlayer_MediaEnded(ByVal NewState As Integer) Handles musicPlayer.PlayStateChange
            If NewState = WMPLib.WMPPlayState.wmppsStopped Then
                musicPlayer.close()
            End If
        End Sub
    End Class
    Et dans la fenêtre principale de mon application j’appelle le son ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UISound.PlayMusic("son1.wav")
    Parfait!!

    Dans mon application il y a un lancement d'une autre application et je veux qu'il y ait un son juste avant ce lancement
    J'ai donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub launchGame(ByVal romn)
            UISound.PlayMusic("voice1.wav")
            Dim myProcess As New Process()
            myProcess.StartInfo.FileName = appName
            myProcess.StartInfo.WorkingDirectory = appDir
            myProcess.StartInfo.Arguments = appCmd
            myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
            myProcess.Start()
            Me.Topmost = False
            myProcess.WaitForExit()
            myProcess.Close()
            Me.Topmost = True
    End Sub
    ...et bien le son se lance (ou du moins n'est entendu!) que lorsque l'application lancée est terminée et que l'on revient sur la mienne!
    J'ai fait un test, et le fait d'enlever

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myProcess.WaitForExit()
    permet d'entendre le son. C'est comme si tout allait "trop vite" et que, bien que l'instruction de lecture du son soit faite avant de lancer l'application extérieure, le fait de tomber sur le 'myProcess.WaitForExit' l'interrompe momentanément!?

    Est-ce bien cela qui se passe?
    Comment faire pour assurer la lecture du son jusqu'au bout pendant le lancement de l'application extérieure (ou au pire, juste avant)

    Merci!!

  2. #2
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198

  3. #3
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Salut

    pourquoi ne pas se servir de
    My.Computer.Audio.Play(url)
    http://msdn.microsoft.com/fr-fr/libr...(v=vs.80).aspx

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 158
    Par défaut
    Je viens de "là" et j'ai du utiliser WMPlib pour bénéficier de plus de fonctionnalités (plus de pistes, volumes séparés, etc..)

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    démarre un thread (via biackgroundworker par exemple) pour lire le son
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 158
    Par défaut
    Merci Pol63, j'ai en effet eu cette information sur un autre forum.
    Et pour les personnes que cela pourrait intéresser, voici le nécessaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Imports System.Threading 'avant toute chose
    Dim uiThread As Thread = New Thread(AddressOf StartSound) 'en en-tête de la classe fenêtre
     
    Sub StartSound() 'Créer le sub qui sera lancé dans un thread et qui lance le son
            UISound.PlayFile("voice1.wav")
    End Sub
     
    uiThread = New Thread(AddressOf StartSound) ' il faut à chaque fois faire une nouvelle instance de thread car celui-ci est détruit après chaque lecture du son
    uiThread.Start() 'lancer le thread

Discussions similaires

  1. Conseils avant lancement d'un CMS
    Par xxkirastarothxx dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 06/10/2008, 16h27
  2. [c#] Préinstaller framework avant lancement exe
    Par daner06 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/08/2007, 17h42
  3. Charger un fichier son avant sa lecture
    Par Bleys dans le forum Delphi
    Réponses: 5
    Dernier message: 07/01/2007, 14h37
  4. [VB.Net] photo et son au lancement d'un application
    Par badnane2 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 26/07/2006, 08h30
  5. Temps de réalisation d'une requete avant lancement
    Par jcachico dans le forum Outils
    Réponses: 6
    Dernier message: 12/04/2006, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo