प्रश्न में 'क्लिक ध्वनि' वास्तव में एक प्रणाली की व्यापक वरीयता है, इसलिए मैं केवल तभी अक्षम होना चाहता हूं जब मेरा एप्लिकेशन फोकस हो और फिर जब एप्लिकेशन फोकस बंद/खो देता है तो पुनः सक्षम करें।
मूल रूप से, मैं यहां इस सवाल को स्टैक ओवरफ्लो पर पूछना चाहता था, लेकिन मैं बीटा में अभी तक नहीं था। तो, उत्तर के लिए गुगल करने और इसके बारे में केवल थोड़ी सी जानकारी खोजने के बाद मैं निम्नलिखित के साथ आया और अब इसे पोस्ट करने का फैसला किया कि मैं बीटा में हूं।
using System;
using Microsoft.Win32;
namespace HowTo
{
class WebClickSound
{
///
/// Enables or disables the web browser navigating click sound.
///
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 घटनाओं में उपरोक्त कोड का उपयोग करते हैं:
- Activated
- Deactivated
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;
}
एक समस्या जो मैं वर्तमान में देखता हूं वह यह है कि यदि प्रोग्राम दुर्घटनाग्रस्त हो जाता है तो उनके पास क्लिक ध्वनि नहीं होगी जब तक कि वे मेरे एप्लिकेशन को फिर से लॉन्च नहीं करते हैं, लेकिन वे ऐसा नहीं करना चाहेंगे।
आप लोग क्या सोचते हैं? क्या यह एक अच्छा समाधान है? क्या सुधार किए जा सकते हैं?