Как отключить веб-браузер Click Click только в вашем приложении

«Звук щелчка»; речь идет о системных настройках, поэтому я хочу, чтобы он отключался только тогда, когда мое приложение имеет фокус, а затем снова включался, когда приложение закрывало / теряло фокус.

Первоначально я хотел задать этот вопрос здесь на stackoverflow, но я еще не был в бета-версии. Итак, после поиска ответа и поиска лишь небольшой информации о нем, я пришел к следующему и решил опубликовать его здесь, сейчас, когда я в бета-версии.

<code>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;
            }
        }
    }
}
</code>

Затем в основной форме мы используем вышеуказанный код в этих 3 событиях:

Activated Deactivated

FormClosing

<code>private void Form1_Activated(object sender, EventArgs e)
{
    // Disable the sound when the program has focus
    WebClickSound.Enabled = false;
}

private void Form1_Deactivate(object sender, EventArgs e)
{
    // Enable the sound when the program is out of focus
    WebClickSound.Enabled = true;
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    // Enable the sound on app exit
    WebClickSound.Enabled = true;
}
</code>

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

Что, вы парни, думаете? Это хорошее решение? Какие улучшения могут быть сделаны?

Ответы на вопрос(5)

Ваш ответ на вопрос