SISTEMA de cambio de nivel de volumen en windows

Mi aplicación necesita para ser capaz de cambiar el sistema de niveles de volumen de los dispositivos de sonido. Estoy usando C# con NAudio. He intentado utilizar CoreAudio Api en NAudio, pero esto no funciona en Windows XP, sin embargo, mi programa de necesidades para soporte de XP. Por favor, ayúdame, ¿qué necesito para usar, para obtener mi programa de apoyo a XP así como la más reciente de Windows.

  • looky aquí stackoverflow.com/questions/13139181/…
  • NAudio también incluye contenedores para el mezclador… APIs que usted debería ser capaz de utilizar para ajustar el volumen del sistema en XP
  • ¿Me pueden ayudar. ¿Qué debo buscar?
  • Mira Mezclador.Mezcladores y, a continuación, para cada mezclador, un vistazo a sus Destinos. Espero que usted puede encontrar el volumen de control que usted necesita para ajustar
  • Gracias @MarkHeath, que es útil! 🙂
  • La solución de pablo no para mi Windows XP VM

InformationsquelleAutor EXTRAM | 2013-06-03

1 Kommentar

  1. 2

    Aquí es el más sencillo y bien conocido método de uso de P/Invoke llamadas:

        using System;
        using System.Collections.Generic;
        using System.ComponentModel;
        using System.Data;
        using System.Drawing;
        using System.Text;
        using System.Windows.Forms;
        using System.Runtime.InteropServices;
    
        namespace VolumeControl
        {
           public partial class Form1 : Form
           {
              [DllImport("winmm.dll")]
              public static extern int waveOutGetVolume(IntPtr hwo, out uint dwVolume);
    
          [DllImport("winmm.dll")]
          public static extern int waveOutSetVolume(IntPtr hwo, uint dwVolume);
    
          public Form1()
          {
             InitializeComponent();
             //By the default set the volume to 0
             uint CurrVol = 0;
             //At this point, CurrVol gets assigned the volume
             waveOutGetVolume(IntPtr.Zero, out CurrVol);
             //Calculate the volume
             ushort CalcVol = (ushort)(CurrVol & 0x0000ffff);
             //Get the volume on a scale of 1 to 10 (to fit the trackbar)
             trackWave.Value = CalcVol / (ushort.MaxValue / 10);
          }
    
          private void trackWave_Scroll(object sender, EventArgs e)
          {
             //Calculate the volume that's being set
             int NewVolume = ((ushort.MaxValue / 10) * trackWave.Value);
             //Set the same volume for both the left and the right channels
             uint NewVolumeAllChannels = (((uint)NewVolume & 0x0000ffff) | ((uint)NewVolume << 16));
             //Set the volume
             waveOutSetVolume(IntPtr.Zero, NewVolumeAllChannels);
          }
       }
    }

    Fuente: http://www.geekpedia.com/tutorial176_Get-and-set-the-wave-sound-volume.html

    También, si usted desea combinar este trabajo con CoreAudioAPI de leer esto: Cambio de maestro de volumen de audio desde XP a Windows 8 en C#

    • Estoy en Windows 8.1. Independientemente de mis niveles de audio, siempre obtengo el mismo valor (65535), incluso si me silenciar el volumen maestro.
    • en windows 7, esta solo lee/escribe por el volumen de la aplicación

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea