HowTo Отключают WebBrowser ' Нажмите Sound' в Вашем приложении только
' щелкните по sound' рассматриваемый на самом деле система широкое предпочтение, таким образом, я только хочу, чтобы оно было отключено, когда мое заявление фокусируется, и затем повторно позвольте, когда применение закрывается/теряет центр.
Первоначально, я хотел задать этот вопрос здесь на stackoverflow, но я еще не был в бете. Так, после googling для ответа и нахождения только определенной информации о нем я придумал следующее и решил отправить его здесь теперь, когда I' m в бете.
using System;
using Microsoft.Win32;
namespace HowTo
{
class WebClickSound
{
/// <summary>
/// Enables or disables the web browser navigating click sound.
/// </summary>
public static bool Enabled
{
get
{
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"AppEvents\Schemes\Apps\Explorer\Navigating\.Current");
string keyValue = (string)key.GetValue(null);
return String.IsNullOrEmpty(keyValue) == false && keyValue != "\"\"";
}
set
{
string keyValue;
if (value)
{
keyValue = "%SystemRoot%\\Media\\";
if (Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor > 0)
{
// XP
keyValue += "Windows XP Start.wav";
}
else if (Environment.OSVersion.Version.Major == 6)
{
// Vista
keyValue += "Windows Navigation Start.wav";
}
else
{
// Don't know the file name so I won't be able to re-enable it
return;
}
}
else
{
keyValue = "\"\"";
}
// Open and set the key that points to the file
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"AppEvents\Schemes\Apps\Explorer\Navigating\.Current", true);
key.SetValue(null, keyValue, RegistryValueKind.ExpandString);
isEnabled = value;
}
}
}
}
Тогда в главной форме мы используем вышеупомянутый кодекс на этих 3 событиях:
-
Активированный
-
Дезактивированный
-
FormClosing
частный недействительный Form1_Activated (возражают отправителю, EventArgs e), { //Отключите звук, когда программа сфокусируется WebClickSound. Позволенный = ложный; } частный недействительный Form1_Deactivate (возражают отправителю, EventArgs e), { //Позвольте звук, когда программа будет не в фокусе WebClickSound. Позволенный = верный; } частный недействительный Form1_FormClosing (возражают отправителю, FormClosingEventArgs e), { //Позвольте звук на выходе приложения WebClickSound. Позволенный = верный; }
Одна проблема, которую я вижу в настоящее время, состоит в том, если программа разбивает их won' у t есть звук щелчка, пока они не повторно начинают мое заявление, но их wouldn' t знают, чтобы сделать это.
Что делает Вас, парни думают? Действительно ли это - хорошее решение? Какие улучшения могут быть сделаны?
I' ve заметил это, если Вы используете WebBrowser. Документ. Напишите, а не WebBrowser. DocumentText тогда щелчок кажутся doesn' t происходят.
Таким образом вместо этого:
попробуйте это:
Вы отключаете его, изменяя ценность регистрации Internet Explorer навигации звука к " NULL":
И позвольте его, изменив ценность регистрации Internet Explorer навигации звука к " C:\Windows\Media\Cityscape\Windows Navigation Start.wav":
Определенно чувствует себя подобно хакерскому проникновению, но проводивший некоторое исследование на этом давным-давно и не находящий никаких других решений, вероятно, Ваш лучший выбор.
Еще лучше проектировал бы Ваше заявление так это doesn' t требуют многих, раздражающая страница перезагружает.. например, если you' ре, освежающее iframe, чтобы проверить на обновления на сервере, используйте XMLHttpRequest вместо этого. (Можете Вы говорить, что я имел дело с этой проблемой назад в дни перед термином " AJAX" был выдуман?)
Если Вы хотите использовать Windows Registry замены, используйте это: