2012-01-16 4 views
18

estoy haciendo un programa que utiliza la biblioteca del habla y me gustaría obtener todos los demás sonidos apagados o reducirse cuando la mujer está hablando.Cómo hacer que mi solicitud se considerará como un programa de comunicación en Windows

He estado buscando una manera de silenciar otras aplicaciones de forma manual, pero he visto una opción en Windows en la pestaña de comunicación (dentro de las opciones de sonido) que menciona esa ventana puede gestionar esto para mí. Como en esta imagen:

enter image description here

Así que, básicamente, lo que se necesita para que mi solicitud sea considerada como una aplicación de comunicación (como Skype)?

+1

http://msdn.microsoft.com/en-us/library/windows/desktop/dd940522(v=vs.85).aspx puede ser relevante. No lo he visto con suficiente detalle para escribir una respuesta. – Random832

+0

Tal vez [esto] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd316773%28v=vs.85%29.aspx) es lo que está buscando. Nunca lo usé yo mismo, así que no puedo darle una forma adecuada de cómo registrar su programa como tal aplicación. – dowhilefor

Respuesta

5

Creo que las aplicaciones de comunicación están implementando algo relacionado con la interfaz IAudioVolumeDuckNotification. El ejemplo C++ proporcionado también hace referencia a WM_VOLUME_DUCK y WM_VOLUME_UNDUCK mensajes de ventanas que pueden ser lo suficientemente (pero no parecen ser capaces Google-o documentada).

ACTUALIZACIÓN

El .NET Core Audio API project en CodePlex parece proporcionar una envoltura .NET.

ACTUALIZACIÓN

Una muestra C++ aplicación de IAudioVolumeDuckNotification, así como un ejemplo de notificar el estado ducked se pueden encontrar en la aplicación de ejemplo MSDN DuckingMediaPlayer. En realidad funciona (lo intenté). Una combinación de PInvoke'ing un par de métodos y .NET wrapper para la interfaz debería ser suficiente para ponerlo en su camino.

Cuestiones relacionadas