2010-12-30 16 views
3

私は以下を使用して、自分のコンピュータのマスターオーディオをミュート/ミュート解除しています。さて、私はミュート状態を判断する方法を探しています。 C#でこれを行う簡単な方法はありますか?マスターボリュームがミュートされているかどうかを確認するにはどうすればよいですか?

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

受け入れ答えに、http://stackoverflow.com/questions/294292この質問をチェックしてください 'IsMuted' – RRUZ

+0

と呼ばれる方法を存在するはい、答えであるように思われます。コメントに記載されているように、互換モードが有効な場合のみ動作します。 –

答えて

0

RRUZのクレジットは上記のコメントに記載されています。 stackoverflow.com/questions/294292を参照してください。唯一の問題は、互換モードが必要なことです。

0

以下をチェックアウトtutorial。私はミキサーでC#(または他の言語)でプレイしたことがないので、P/Win32 APIを呼び出す際に正しいと仮定しており、ホイールを再作成していないと仮定しています。あなたは例をダウンロードすることができ、私はGetMixer()メソッドがあなたが望むことをすると思います。

8

こんにちは、この古いトピックをちょうど間違えたが、まったく同じ問題を削っている。

私は、次を使用して解決:ミュートは常にオーディオをミュートしません

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); 

、それはトグルだ - しかし、あなたが最初に「ミュート解除」を呼び出すようにしてください場合は、金色でなければなりません。

敬具 クルト

+0

ニース。それはとても賢いものでした。私はWindowsがロックされているときに私の小さなオープンソースプロジェクトを使ってシステムボリュームをミュートしています。 https://github.com/dthompsonza/MuteOnLock –

+0

これは実際には答えではありません。問題は、「マスターボリュームがミュートされているかどうかをどのように確認するのですか?」です。ここでは答えられません。 – Matyas

関連する問題