Это первый пост, описывающий мои извращения с компонентом WebBrowser, когда я пытался заставить его работать так, как я хочу.

Все кто, хоть раз запускал IE 7 или 8 знает, что когда в нем страница загружается, то он издает специфический звук. Однако, если в программе есть компонент WebBrowser, который автоматически обновляется, то постоянное клацанье раздражает. Чтобы побороть этот звук, я нашел и переделал кусок кода, которым с вами поделюсь:


using Microsoft.Win32;

class IESound
{
private static string MusicFilePath;
private static void GetMusicFilePath()
{
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"AppEvents\Schemes\Apps\Explorer\Navigating\.Current");
MusicFilePath = (string)key.GetValue(null);
}
///


/// Включение/выключение звуков в браузере
///

public static bool Enabled
{
get
{
return String.IsNullOrEmpty(MusicFilePath) == false && MusicFilePath != "\"\"";
}
set
{
string keyValue = string.Empty;

if (String.IsNullOrEmpty(MusicFilePath))
{
GetMusicFilePath();
}

if (value)
{
keyValue = MusicFilePath;
}
else
{
keyValue = "\"\"";
}

RegistryKey key = Registry.CurrentUser.OpenSubKey(@"AppEvents\Schemes\Apps\Explorer\Navigating\.Current", true);
key.SetValue(null, keyValue, RegistryValueKind.ExpandString);
}
}
}

При загрузке программы выключайте звук, при завершении программы – включайте, однако если программа вылетит, то звук потеряется :(

И еще, когда звук выключен, то он выключается не только в вашей программе, но и в IE тоже, а также при хождению по папкам через Windows Explorer. Нормального пути выключить звук я не нашел, хотя долго искал.