Créer un controle volume ?

WR104 - 2 juin 2013 à 20:20
 Utilisateur anonyme - 5 juin 2013 à 01:48
Bonjour,
Depuis maintenant deux jours je cherche un code qui permettrait de contrôler le son de l'ordi (up, down & mute) depuis une application faite sous VB. Cette application est en réalité un réveil. Le but de pouvoir contrôler le son est que lorsqu'il est l'heure de jouer la musique le volume sonore progresse progressivement (exemple +1 toutes les 0.5 sec). L'idéale serait un bouton pour chaque commande (up, down & mute) mais je ne sais pas du tout comment faire.

PS : je suis débutant en programmation donc il me faudrait des codes simples ou alors bien expliqué

7 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 juin 2013 à 22:41
Bonjour,
ce forum possède un moteur de recherche, à utiliser, s'il te plait.
Bandeau au dessus : onglet Trouver un code source :
Mots clés : Controle Volume
Options de recherche : Tous les codes sauf .Net
Dans : codes
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
3 juin 2013 à 02:55
Bonjour,

Avec un peu de chance, tu vas probablement trouver de quoi là-dedans.

Et puis le règlement simonac, le rrrrrrrrrrrrrrrrrrrrrrrrrrrrèglement.
0
Ok j'ai cherché sur le site mais les codes que j'ai trouvé ne marche pas sur mon ordi
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 juin 2013 à 18:48
Ok j'ai cherché sur le site mais les codes que j'ai trouvé ne marche pas sur mon ordi

Montre donc, pour voir, le code que tu as ainsi écrit sous VB6 (la présente section) et qui "ne marche pas sur ton ordi" !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Runtime.InteropServices

''' <summary>
''' Permet de changer le volume de Windows
''' </summary>
Public Module Son

    ''' <summary>
    ''' The waveOutGetVolume function retrieves the current volume level of the specified waveform-audio output device.
    ''' </summary>
    ''' Handle to an open waveform-audio output device. This parameter can also be a device identifier.


    ''' Pointer to a variable to be filled with the current volume setting. The low-order word of this location contains the left-channel volume setting, and the high-order word contains the right-channel setting. A value of 0xFFFF represents full volume, and a value of 0x0000 is silence.


    ''' <returns>Returns MMSYSERR_NOERROR if successful or an error otherwise. </returns>
    <DllImport("winmm.dll")> _
    Private Function waveOutGetVolume(ByVal hwo As IntPtr, ByRef dwVolume As UInteger) As Integer
    End Function

    ''' <summary>
    ''' The waveOutSetVolume function sets the volume level of the specified waveform-audio output device.
    ''' </summary>
    ''' Handle to an open waveform-audio output device. This parameter can also be a device identifier.


    ''' New volume setting. The low-order word contains the left-channel volume setting, and the high-order word contains the right-channel setting. A value of 0xFFFF represents full volume, and a value of 0x0000 is silence.


    ''' <returns>Returns MMSYSERR_NOERROR if successful or an error otherwise.</returns>
    <DllImport("winmm.dll")> _
    Private Function waveOutSetVolume(ByVal hwo As IntPtr, ByVal dwVolume As UInteger) As Integer
    End Function

    ''' <summary>
    ''' Volume maximum
    ''' </summary>
    Public Const VolumeMax As Integer = &HFFFF

    ''' <summary>
    ''' Changer le volume pour l'enceinte à  et à .
    ''' </summary>
    ''' Volume de l'enceinte de gauche, si null alors le volume de l'enceinte de gauche n'est pas changé.


    ''' Volume de l'enceinte de droite, si null alors le volume de l'enceinte de droite n'est pas changé.


    Private Sub ChangerVolume(ByVal gauche As System.Nullable(Of Integer), ByVal droite As System.Nullable(Of Integer))
        Dim volume As UInteger

        If gauche Is Nothing Then
            gauche = VolumeGauche
        End If

        If droite Is Nothing Then
            droite = VolumeDroite
        End If

        volume = (CUInt(gauche.Value) And &HFFFF) << 16
        volume = volume Or (CUInt(droite.Value) And &HFFFF)

        waveOutSetVolume(IntPtr.Zero, volume)
    End Sub

    ''' <summary>
    ''' Récupère le volume d'une des enceinte ou les deux.
    ''' </summary>
    ''' true pour récupérer le volume de l'enceint de gauche, false pour celle
    ''' de droite, null pour les deux.


    ''' <returns>Le volume de l'enceint spécifiée ou la moyenne des deux.</returns>
    Private Function GetVolume(ByVal récupérerVolumeGauche As System.Nullable(Of Boolean)) As Integer
        Dim volume As UInteger
        Dim gauche As Integer
        Dim droite As Integer

        waveOutGetVolume(IntPtr.Zero, volume)

        gauche = CInt(((volume And &HFFFF0000) >> 16))
        droite = CInt((volume And &HFFFF))

        If récupérerVolumeGauche IsNot Nothing Then
            If récupérerVolumeGauche.Value = True Then
                Return gauche
            Else
                Return droite
            End If
        Else
            Return (gauche + droite) / 2
        End If
    End Function

    ''' <summary>
    ''' Obtient ou défini le volume des enceintes
    ''' </summary>
    ''' <exception cref="ArgumentOutOfRangeException">Si  est null.</exception>
    Public Property Volume() As Integer
        Get
            Return GetVolume(Nothing)
        End Get

        Set(ByVal value As Integer)
            If value < 0 AndAlso value > VolumeMax Then
                Throw New ArgumentOutOfRangeException([String].Format("Le volume doit être compris entre 0 et {0}", VolumeMax), "value")
            End If

            ChangerVolume(value, value)
        End Set
    End Property

    ''' <summary>
    ''' Obtient ou défini le volume de l'enceinte de gauche
    ''' </summary>
    ''' <remarks> doit être compris entre 0 et <see cref="VolumeDroite"/>.</remarks>
    ''' <exception cref="ArgumentOutOfRangeException">Si  n'est pas compris entre 0 et <see cref="VolumeMax"/>.</exception>
    Public Property VolumeGauche() As Integer
        Get
            Return GetVolume(True)
        End Get

        Set(ByVal value As Integer)
            If value < 0 AndAlso value > VolumeMax Then
                Throw New ArgumentOutOfRangeException([String].Format("Le volume doit être compris entre 0 et {0}", VolumeMax), "value")
            End If

            ChangerVolume(value, Nothing)
        End Set
    End Property

    ''' <summary>
    ''' Obtient ou défini le volume de l'enceinte de droite.
    ''' </summary>
    ''' <remarks> doit être compris entre 0 et <see cref="VolumeDroite"/>.</remarks>
    ''' <exception cref="ArgumentOutOfRangeException">Si  n'est pas compris entre 0 et <see cref="VolumeDroite"/>.</exception>
    Public Property VolumeDroite() As Integer
        Get
            Return GetVolume(False)
        End Get

        Set(ByVal value As Integer)
            If value < 0 AndAlso value > VolumeMax Then
                Throw New ArgumentOutOfRangeException([String].Format("Le volume doit être compris entre 0 et {0}", VolumeMax), "value")
            End If

            ChangerVolume(Nothing, value)
        End Set
    End Property
End Module


Ce module ne modifie que le son de l'appli et non le son général de windows comme indiqué.
Donc pour définir le volume je fais
Son.Volume = TextBox1.text
le volume sonore de l'appli baisse.
Mais comment le mettre en "mute" et du coup comment après le "démuté"

Merci de votre aide
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 juin 2013 à 21:38
Le code que tu montres là n'est pas écrit pour :
Forum > Visual Basic 6

(la présente section du forum)
mais pour VB.Net !!!
Bonne chance !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
5 juin 2013 à 01:48
Bonjour,

Non seulement c'est du VB.Net mais c'est aussi un parfait copier/coller d'un code en C, de notre ami Gilles TOURREAU transcrit en VB.Net.

Hé oui, le problème du copier/coller c'est qu'on y comprends rien du tout... sinon c'est bien pratique.

Nous voilà encore avec un PFE, si vous voulez la définition du PFE dites-le moi.

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Rejoignez-nous