HowTo Désactiver WebBrowser 'déclic' dans votre application uniquement

Le "déclic" en question est en fait un vaste système de préférence, je veux seulement qu'il soit désactivé lorsque mon application a le focus, puis de le ré-activer lorsque l'application se ferme/perd le focus.

À l'origine, je voulais poser cette question sur stackoverflow, mais je n'étais pas encore dans la version bêta. Ainsi, après une recherche sur google pour trouver la réponse et de trouver seulement un peu d'informations sur elle, je suis venu avec la suivante et a décidé de le poster ici maintenant que je suis dans la 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;
}
}
}
}

Puis dans le formulaire principal, nous utilisons le code ci-dessus dans ces 3 événements:

  • Activé
  • 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;
    }

Le seul problème que je vois actuellement est de savoir si le programme se bloque ils n'auront pas la cliquez sur sound jusqu'à ce qu'ils re-lancement de mon application, mais ils ne savent pas le faire.

Ce que vous en pensez? Est-ce une bonne solution? Quelles améliorations peuvent être apportées?

  • J'ai eu un problème avec cette ligne: isEnabled = valeur; j'ai juste commenté, mais je veux savoir ce qu'il était destiné à être
InformationsquelleAutor sieben | 2008-08-13