¿Cómo puedo obtener el actual maestro de volumen del sistema en Windows 7?

Busqué en Google, pero cada solución que se devuelve valores como -1 o 4686346 sin una explicación clara de lo que significan.

  • Le sugiero que lea tu pregunta y pregúntate a ti mismo – nadie va a entender mi pregunta y ser capaz de responder a ella? tinyurl.com/so-hints
  • Por favor defina «sonido actual». Suena como que usted ha encontrado una solución para volver discreto de valores de la muestra – si no es necesario, ¿qué necesitas ?
  • Tu pregunta no es muy clara sobre cuál es el problema. Por favor, re-editar tu pregunta e incluyen cosas como: ¿Qué, exactamente, es que estamos tratando de hacer. ¿Qué cosas has probado (un pequeño código de ejemplo sería de ayuda, o un enlace a otro sitio que muestra a alguien haciendo algo similar). Lo que no funcionó con la de cosas que he probado: ¿Qué estaba esperando a ver, ¿y cuál fue el resultado real?
  • ¿Desea que el ajuste de volumen actual?
  • lo siento por ese error
  • answers.yahoo.com/question/index?qid=20100622135700AAWFVpi Esto debería ayudar, supongo
  • Creo que es la misma pregunta que con este [uno][1]! [1]: stackoverflow.com/questions/2534595/…

InformationsquelleAutor Code0987 | 2011-01-09

3 Comentarios

  1. 8

    Estás buscando el EndpointVolume API. Esto es parte de la nueva Api de audio que se publicaron en Windows Vista, y que puede ser utilizado para obtener o establecer el volumen maestro.

    Esta empresa es mucho más fácil por el hecho de que usted no necesita compatibilidad con versiones de Windows anteriores a Vista (es decir, Windows XP), ya que no hay cambios sustanciales en la infraestructura pertinente entre los SO de prensa. Esta es probablemente la razón por la que la existente en las muestras que he probado no funcionan correctamente.

    Hay una completa contenedor administrado la biblioteca están disponibles en CodeProject: Vista Core Audio API de Control de Volumen Maestro. Probablemente implementa más funcionalidad que usted necesita, pero usted puede obtener una idea de lo que usted necesita hacer para determinar el maestro de volumen del sistema a partir de su aplicación en C#.

    • CodeProject enlace está muerto.
  2. 9

    Aceptar, para aquellos que buscan una línea de comandos o C++ opción, aquí un poco de la fuente utilizando el IAudioEndpointVolume de la API.

    Resulta que hay son «escalar» los métodos que funcionan bien, y devuelve un número de 0 a 100 (con getters y setters).

    fuente:
    https://gist.github.com/rdp/8363580

    De la línea de comandos de compilación de aquí.

    Ver también posiblemente https://stackoverflow.com/a/7550110/32453

    • Parece que no puede capturar la salida de, por ejemplo, el uso de getvol.exe > file el archivo está vacío. Alguna idea?
    • Aquí es el problema. Puede que bonita por favor agregar un color y volver a compilar? Mi mingw32 no se puede construir y no quiero romper mi trabajo mingw32 instalación de jugar con mingw64. Saludos!
    • hmm parece que funciona OK aquí [vista] redirige a un archivo, este tiene un agregado de color: sourceforge.net/projects/mplayer-edl/files/…
    • Genial, gracias! He verificado que la nueva versión ahora puede ser redirigida a un archivo. Saludos!
  3. 5

    Ya que C# como una etiqueta, aquí es una pequeña consola de C# aplicación que se pone. Se basa en la GetMasterVolumeLevelScalar método (Vista o superior).

    La GetMasterVolumeLevelScalar método obtiene el nivel de volumen maestro de
    la secuencia de audio que entra o sale del extremo de audio del dispositivo. El
    el nivel de volumen se expresa como una normalizado, audio-cónico valor en el
    rango de 0.0 a 1.0.

      class Program
    {
    static void Main(string[] args)
    {
    Console.WriteLine(VolumeUtilities.GetMasterVolume());
    }
    }
    public static class VolumeUtilities
    {
    public static float GetMasterVolume()
    {
    //get the speakers (1st render + multimedia) device
    IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator)(new MMDeviceEnumerator());
    IMMDevice speakers;
    const int eRender = 0;
    const int eMultimedia = 1;
    deviceEnumerator.GetDefaultAudioEndpoint(eRender, eMultimedia, out speakers);
    object o;
    speakers.Activate(typeof(IAudioEndpointVolume).GUID, 0, IntPtr.Zero, out o);
    IAudioEndpointVolume aepv = (IAudioEndpointVolume)o;
    float volume = aepv.GetMasterVolumeLevelScalar();
    Marshal.ReleaseComObject(aepv);
    Marshal.ReleaseComObject(speakers);
    Marshal.ReleaseComObject(deviceEnumerator);
    return volume;
    }
    [ComImport]
    [Guid("BCDE0395-E52F-467C-8E3D-C4579291692E")]
    private class MMDeviceEnumerator
    {
    }
    [Guid("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    private interface IAudioEndpointVolume
    {
    void _VtblGap1_6();
    float GetMasterVolumeLevelScalar();
    }
    [Guid("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    private interface IMMDeviceEnumerator
    {
    void _VtblGap1_1();
    [PreserveSig]
    int GetDefaultAudioEndpoint(int dataFlow, int role, out IMMDevice ppDevice);
    }
    [Guid("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    private interface IMMDevice
    {
    [PreserveSig]
    int Activate([MarshalAs(UnmanagedType.LPStruct)] Guid iid, int dwClsCtx, IntPtr pActivationParams, [MarshalAs(UnmanagedType.IUnknown)] out object ppInterface);
    }
    }
    • Esto funcionó de inmediato. Gracias!

Dejar respuesta

Please enter your comment!
Please enter your name here