2013-03-30 8 views
10

マイウェブブラウザ:ウェブブラウザは、すべてのオーディオ出力を無効にする - オンラインラジオからユーチ​​ューブ

XAML:C#の背後

//... 
xmlns:my="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration" 
//... 
<my:WindowsFormsHost Name="windowsFormsHost"/> 

コード:

System.Windows.Forms.WebBrowser Browser = new System.Windows.Forms.WebBrowser(); 
windowsFormsHost.Child = Browser; 

私の質問は、すべてのオーディオ出力を無効にする方法であります。

私はこれを見つけた:

のC#:

private const int Feature = 21; //FEATURE_DISABLE_NAVIGATION_SOUNDS 
private const int SetFeatureOnProcess = 0x00000002; 

[DllImport("urlmon.dll")] 
[PreserveSig] 
[return: MarshalAs(UnmanagedType.Error)] 
static extern int CoInternetSetFeatureEnabled(int featureEntry, 
    [MarshalAs(UnmanagedType.U4)] int dwFlags, 
    bool fEnable); 

その罰金が、このコードは、この場合、役に立たないのは、その種ので、音を "クリック" だけ無効にします。

私のアプリケーションでは、100%ミュート、全く音が鳴りません。

私は、このWebブラウザではWindows Soundsで処理する必要があることを読んだことがありますが、コードでこれを行うことはできません。

答えて

9

ここでは簡単にやり方を説明します。 WebBrowserに固有のものではありませんが、あなたが要求したものは何ですか:私のアプリケーションからは100%ミュートが必要です。

using System; 
using System.Runtime.InteropServices; 
using System.Windows.Forms; 

namespace WinformsWB 
{ 
    public partial class Form1 : Form 
    { 
     [DllImport("winmm.dll")] 
     public static extern int waveOutGetVolume(IntPtr h, out uint dwVolume); 

     [DllImport("winmm.dll")] 
     public static extern int waveOutSetVolume(IntPtr h, uint dwVolume); 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      // save the current volume 
      uint _savedVolume; 
      waveOutGetVolume(IntPtr.Zero, out _savedVolume); 

      this.FormClosing += delegate 
      { 
       // restore the volume upon exit 
       waveOutSetVolume(IntPtr.Zero, _savedVolume); 
      }; 

      // mute 
      waveOutSetVolume(IntPtr.Zero, 0); 
      this.webBrowser1.Navigate("http://youtube.com"); 
     } 
    } 
} 
+2

残念ながら、私はアプリケーション全体をミュートにすることについてOPの質問に迷っていました。私は、Webブラウザコントロールに固有の解決策を望んでいました(私のアプリは他のオーディオソースを持っているので)。よりターゲットを絞った方法を知っているのではないでしょうか?いずれにせよ、これは* OPの質問にきちんと答えます*。 – JYelton

+0

私はそれを見ます。それができるかどうかわからない。 – Noseratio

+0

私はそれが可能ではないと思います。私は 'WebBrowser'の子ウィンドウ全体に[APPCOMMAND_VOLUME_MUTE](http://stackoverflow.com/questions/154089/mute-windows-volume-using-c-sharp)を送信しようとしました。グローバルミュート。 – Noseratio

0

あなたはDISPID_AMBIENT_DLCONTROL

DLCTL_DLIMAGES、DLCTL_VIDEOS、およびDLCTL_BGSOUNDSを使用するだけでなく試すことができます。これらのフラグがある場合は画像、動画、背景音はサーバからダウンロードし、表示または再生されますセット。フラグが設定されていない場合、それらはダウンロードされずに表示されません。

関連する問題