none
Contrôler le volume des sons avec un trackbar ? RRS feed

  • Question

  • Bonjour à tous,

    Je cherche à contrôler le volume des sons Windows grâce à un trackbar.

    J'ai déja réussi à afficher le mélangeur :

    Shell("sndvol -f")

    mais je voudrais pouvoir le contrôler dans le form.

    Merci

    JonhSHEPARD

    dimanche 10 juin 2012 15:36

Réponses

  • Principalement en adaptant la valeur 'Maximum' du TrackBar. Par exemple :

    Public Class Form1
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            With Me.TrackBar1
                .Minimum = 0
                .Maximum = 65535
                .TickFrequency = 5000
                .TickStyle = TickStyle.Both
            End With
        End Sub
    
        Private Sub TrackBar1_Scroll(sender As System.Object, e As System.EventArgs) Handles TrackBar1.Scroll
            Shell("nircmd setsysvolume " & Me.TrackBar1.Value.ToString)
            Me.Label1.Text = System.Math.Round((Me.TrackBar1.Value / 65535) * 100, 0, MidpointRounding.AwayFromZero).ToString & " %"
        End Sub
    End Class
    


    Cordialement, Jacques

    • Marqué comme réponse Shep963213 mercredi 13 juin 2012 15:10
    mercredi 13 juin 2012 14:52
  • A part un cuseur qui clignote c'est impeccable MERCI

    Cordialement

    JonhSHEPARD

    • Marqué comme réponse Shep963213 mercredi 13 juin 2012 15:11
    mercredi 13 juin 2012 15:11

Toutes les réponses

  • Bonjour,

    Sous Winform cela doit donner quelque chose comme ceci :

     ' le volume va de 0 (max) à -10000 (min)
                                        Dim audioPlay As Audio
                                        audioPlay = New Audio(MON_son_a_jouer.wave, True)
                                        audioPlay.Volume = LE_volume_de_maTrackBar
                                        audioPlay.Play()

    Bien à vous.


    ZGuideTV.NET - administrator/developer


    dimanche 10 juin 2012 23:06
  • Sur ce code, j'ai trouvé 2 erreurs :

    1)

    Dim audioPlay As Audio

    Audio n'est pas accepté

    2)

    Cela n'est pas vraiment une erreur mais bon.

    Je voudrais modifier les sons pas qu'un seul.

    lundi 11 juin 2012 06:33
  • Bonjour JohnSHEPARD,
    Le 11/06/2012 08:33, JonhSHEPARD a écrit : Sur ce code, j'ai trouvé 2 erreurs :

    1)

    Dim audioPlay As Audio

    Audio n'est pas accepté

          


    Il faut pour cela installer DirectX. Par exemple :

    DirectX 9.0c Redistribuable

    et

    DirectX 9.0 SDK

    puis ajouter les références au projet, et les imports :

      Imports Microsoft.DirectX
      Imports Microsoft.DirectX.AudioVideoPlayback

    Il semblerait qu'il y ait un problème avec le Framework 4.0 (Assembly incompatible). OK avec le 3.5.

    2)

    Cela n'est pas vraiment une erreur mais bon.

    Je voudrais modifier les sons pas qu'un seul.

     

    Effectivement avec cette méthode, cela n'affecte pas volume 'principal'. Une solution serait d'utiliser
    l'utilitaire en ligne de commande :

    NirCmd

    associé à un TrackBar (avec Minimum = 0 et Maximum = 65535) :

        Private Sub TrackBar1_Scroll(sender As System.Object, e As System.EventArgs) Handles TrackBar1.Scroll
            Shell("nircmd setsysvolume " & Me.TrackBar1.Value.ToString)
        End Sub

    Voir aussi les options : mutesysvolume et changesysvolume


    Cordialement, Jacques

    • Modifié Jacques93 mardi 12 juin 2012 14:14 Mise en forme
    • Marqué comme réponse Shep963213 mardi 12 juin 2012 17:19
    • Non marqué comme réponse Shep963213 mardi 12 juin 2012 17:19
    mardi 12 juin 2012 14:01
  • Non cela ne marche, merci quand même.
    mardi 12 juin 2012 17:20
  • Le 12/06/2012 19:20, JonhSHEPARD a écrit :
    > Non cela ne marche, merci quand même.
     
    Sans plus de précisions, difficile de poursuivre ...
    Quels tentatives ? Quelles erreurs ?
     
    --
     
    Cordialement,
     
    Jacques.
     

    Cordialement, Jacques
    mardi 12 juin 2012 20:39
  • Je n'arrive pas à utiliser nircmd et DirectX.
    mercredi 13 juin 2012 11:09
  • Bonjour,

    Il serait peut-être possible de partir de http://support.microsoft.com/kb/178456 Attention c'est du VB6 donc à traduire en VB.NET notamment long devient integer.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    mercredi 13 juin 2012 11:50
    Modérateur
  • DirectX ne répondant pas vraiment à ce que tu veux faire, mettons de côté. Pour utiliser NirCmd, selon que tu dispose d'un système d'exploitation 32 ou 64 bits, tu télécharges :

      NirCmd 32 bits

    ou

      NirCmd 64 bits

    Tu dé-zippe le fichier, et, pour simplifier tu copie 'nircmd.exe' dans le répertoire \Windows ou \Windows\System32. Il

    sera ainsi dans le Path. Tu peux ensuite vérifier dans une Invite commande (cmd.exe) :

     

    La première ligne mets le volume à 0%, la seconde à 100%, si c'est OK cela passera avec la fonction Shell dans VB.

    NB : Tu peux aussi indiquer le chemin complet de nircmd.exe, c'est même indispensable s'il n'est pas dans le Path.


    Cordialement, Jacques

    mercredi 13 juin 2012 11:53
  • Bonjour Patrice Scribe,

    Pour le code que tu indiques, il existe une 'adaptation' pour VBNet (uniquement le module) :

      Module son VBNet

    Une des différences étant que le code VB6 travaille en valeur (0 à 65536), et celui en VBNet en pourcentage (0 à 100%)

    Malheureusement si cela fonctionne sous XP (et je suppose W2K aussi), cela n'a pas d'effet sous Windows 7 (32 ou

    64 bits) : le master volume ne bouge pas :-(


    Cordialement, Jacques

    mercredi 13 juin 2012 13:06
  • En fait je voudrais de l'aide avec nircmd

    si le code va de 0 à 65535 comment l'utiliser avec un trackbar ???

    mercredi 13 juin 2012 13:59
  • Le 13/06/2012 13:50, Patrice Scribe a écrit :
    > Bonjour,
    >
    > Il serait peut-être possible de partir de
    > http://support.microsoft.com/kb/178456 Attention c'est du VB6 donc à
    > traduire en VB.NET notamment long devient integer.
    >
     
    En fait, le fonctionnement a changé depuis Vista :
     
    c'est toujours en VB6, le code est assez pointu ...
     
    Un exemple fonctionnant sous XP et Win 7 :
     
     
    --
     
    Cordialement,
     
    Jacques.
     

    Cordialement, Jacques
    mercredi 13 juin 2012 14:24
  • En fait je voudrais de l'aide avec nircmd

    si le code va de 0 à 65535 comment l'utiliser avec un trackbar ???

    Bonjour,

    Avez vous besoin d'un contrôle qui permet de gérer le volume ou avez besoin d'un contrôle qui permet de gérer les ports ?
    je vous demande ça parce que "65535" c'est le max au niveau des ports de connexion (sauf si mes souvenirs sont a défaut) ! (coïncidence ?)


    Cordialement,


    mercredi 13 juin 2012 14:28
    Auteur de réponse
  • Un controle qui permet de gérer le volume

    mercredi 13 juin 2012 14:41
  • Principalement en adaptant la valeur 'Maximum' du TrackBar. Par exemple :

    Public Class Form1
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            With Me.TrackBar1
                .Minimum = 0
                .Maximum = 65535
                .TickFrequency = 5000
                .TickStyle = TickStyle.Both
            End With
        End Sub
    
        Private Sub TrackBar1_Scroll(sender As System.Object, e As System.EventArgs) Handles TrackBar1.Scroll
            Shell("nircmd setsysvolume " & Me.TrackBar1.Value.ToString)
            Me.Label1.Text = System.Math.Round((Me.TrackBar1.Value / 65535) * 100, 0, MidpointRounding.AwayFromZero).ToString & " %"
        End Sub
    End Class
    


    Cordialement, Jacques

    • Marqué comme réponse Shep963213 mercredi 13 juin 2012 15:10
    mercredi 13 juin 2012 14:52
  • A part un cuseur qui clignote c'est impeccable MERCI

    Cordialement

    JonhSHEPARD

    • Marqué comme réponse Shep963213 mercredi 13 juin 2012 15:11
    mercredi 13 juin 2012 15:11