2010-12-30 7 views
3

Ich verwende Folgendes, um das Master-Audio auf meinem Computer stumm zu schalten. Jetzt suche ich nach einer Möglichkeit, den stummen Zustand zu bestimmen. Gibt es eine ebenso einfache Möglichkeit, dies in C# zu tun?Wie kann ich feststellen, ob das Master-Volume stummgeschaltet ist?

private const int APPCOMMAND_VOLUME_MUTE = 0x80000; 
    private const int WM_APPCOMMAND = 0x319; 
    [DllImport("user32.dll")] 
    public static extern IntPtr SendMessageW(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); 
+1

prüfen diese Frage http://stackoverflow.com/questions/294292, in der akzeptierte Antwort gibt es eine Methode namens 'IsMuted' – RRUZ

+0

Ja, es scheint die Antwort zu sein. Wie in den Kommentaren angegeben, funktioniert es nur, wenn der Kompatibilitätsmodus aktiviert ist. –

Antwort

0

Kredit an RRUZ in den Kommentaren oben. Siehe stackoverflow.com/questions/294292. Das einzige Problem ist, dass Sie den Kompatibilitätsmodus benötigen.

0

Überprüfen Sie die folgenden tutorial. Ich habe noch nie mit dem Mixer in C# (oder einer anderen Sprache) gespielt, also gehe ich davon aus, dass sie in P/Aufruf der Win32-APIs korrekt sind und dass sie das Rad nicht neu erfinden. Sie können das Beispiel herunterladen und ich denke, die Methode GetMixer() wird tun, was Sie wollen.

8

Hi stolperte gerade über dieses alte Thema, aber wa rasiert das exakt gleiche Problem.

Ich löste die folgende Verwendung:

using System.Runtime.InteropServices; 

... 

[DllImport("user32.dll", CharSet = CharSet.Auto)] 
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam); 


private const int APPCOMMAND_VOLUME_MUTE = 0x80000; 
private const int APPCOMMAND_VOLUME_UP = 0xA0000; 
private const int APPCOMMAND_VOLUME_DOWN = 0x90000;    
private const int WM_APPCOMMAND = 0x319;   

... 

// mute (toggle) 
SendMessage(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr)APPCOMMAND_VOLUME_MUTE); 


// unmute 
SendMessage(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr)APPCOMMAND_VOLUME_UP); 
SendMessage(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr)APPCOMMAND_VOLUME_DOWN); 

Mute wird nicht immer stumm das Audio, es ist ein Toggle - aber wenn man Sie sollten „unmute“ nennen erster goldene sein sicherstellen.

Mit freundlichen Grüßen Kurt

+0

Schön. Das war ziemlich schlau. Ich verwende es für mein kleines Open-Source-Projekt, um die Systemlautstärke stummzuschalten, wenn Windows gesperrt ist. https://github.com/dthompsonza/MuteOnLock –

+0

Dies ist eigentlich keine Antwort. Die Frage lautete "Wie kann ich feststellen, ob das Master-Volume stummgeschaltet ist?", Was hier nicht beantwortet wird. – Matyas