Le 'clic sonore' en question est en fait une préférence pour le système, je veux donc qu'il soit désactivé lorsque mon application a le focus, puis réactivez-le lorsque l'application se ferme/perd le focus.Comment désactiver WebBrowser 'Click Sound' dans votre application uniquement
A l'origine, je voulais poser cette question ici sur stackoverflow, mais je n'étais pas encore en beta. Donc, après avoir cherché la réponse et trouvé un peu d'information, j'ai trouvé ce qui suit et j'ai décidé de le poster ici maintenant que je suis en 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;
}
}
}
}
ensuite sous la forme principale que nous utilisons le code ci-dessus dans ces 3 événements:
- Activated
- Désactivé
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 L'un des problèmes que je vois actuellement est que si le programme se bloque, ils n'auront pas le son du clic jusqu'à ce qu'ils relancent mon application, mais ils ne sauraient pas le faire.
Qu'en pensez-vous? Est-ce une bonne solution? Quelles améliorations peuvent être faites?
J'ai rencontré un problème avec cette ligne: isEnabled = value; Je viens de le commenter, mais je veux savoir ce qu'il était censé être – Cristo