"Dźwięk kliknięcia" to w rzeczywistości preferencja dla całego systemu, więc chcę, aby była wyłączona tylko wtedy, gdy moja aplikacja jest aktywna, a następnie ponownie włączyć po zamknięciu aplikacji./traci koncentrację.HowTo Disable WebBrowser "Kliknij Sound" tylko w Twojej aplikacji
Pierwotnie chciałem zadać to pytanie tutaj na stackoverflow, ale nie byłem jeszcze w wersji beta. Tak więc, po szukaniu odpowiedzi i znalezieniu tylko niewielkiej ilości informacji na ten temat, wymyśliłem poniższe i postanowiłem opublikować go teraz, gdy jestem w wersji beta.
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;
}
}
}
}
Następnie w formularzu głównym możemy użyć powyższego kodu w tych 3 wydarzenia:
- Activated
- dezaktywowane
FormClosing
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; }
Th Problemem, który obecnie widzę, jest to, że jeśli program się zawiesza, nie usłyszy dźwięku kliknięcia, dopóki ponownie nie uruchomi mojej aplikacji, ale nie będą tego wiedzieć.
Co myślicie? Czy to dobre rozwiązanie? Jakie ulepszenia można wprowadzić?
Miałem problem z tą linią: isEnabled = wartość; Właśnie skomentowałem to, ale chcę wiedzieć, co miało być – Cristo