IEのかちかち音(クリック音)を消す

試しに、IEのかちかち音を消すツールを作ってみました。

ダウンロードは、こちらから。

20101019_02.jpg

やっぱり、かちかち音だから、かちかち山じゃなくちゃね。ということで、画像選びのほうが時間が掛かっていたり。

Visual Studio 2010 で作ったソース付きです。

要は、Internet Explorer が使っているレジストリを変更すればいい訳で、このレジストリを読み込むタイミングが WebBrowser の Navigate メソッドが呼ばれた時なんですね。

HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Explorer\Navigating\.Default

ソースは、こんな感じ

        private string keyCurrent = @"AppEvents\Schemes\Apps\Explorer\Navigating\.Current";
        private string keyDefault = @"AppEvents\Schemes\Apps\Explorer\Navigating\.Default";

        /// <summary>
        /// クリック音をON
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOn_Click(object sender, EventArgs e)
        {
            // .Defaultの値を読み込んで、.Currentに書き込み
            RegistryKey key = Registry.CurrentUser;
            key = key.OpenSubKey(keyDefault);
            string data = (string)key.GetValue(null);
            key.Close();

            key = Registry.CurrentUser;
            key = key.OpenSubKey(keyCurrent,true);
            key.SetValue(null, data);
            key.Close();
        }
        /// <summary>
        /// クリック音をOFF
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOff_Click(object sender, EventArgs e)
        {
            // .Currnetを @"" にする。
            RegistryKey key = Registry.CurrentUser;
            key = key.OpenSubKey(keyCurrent,true);
            key.SetValue(null, "");
            key.Close();
        }

なので、アプリケーション毎に動作を変えたい場合は、

  • アプリケーション起動/終了時に、この値を変える。

あるいは

  • Navigate の呼び出し前後で、OFF/ON を繰り返す。

ってのが方法です。

前者の方法だと、アプリが立ち上がっている間は、IEのかちかち音が鳴らなくなるので、どちらかと云えば、後者がベスト。

ただ、レジストリを読み書きする回数が増えるのが、ちょっと嫌なので、アメブロ自動ペタの例で云えば、

  • ペタを開始する時に、OFFする。
  • ペタを終了した後で、ON にする(元に戻す)。

が良いかなと。

が、実は、WebBrowser を非表示(Visuble を false)にすると、かちかち音はならないのです。

なので、バックグラウンドで隠れ WebBrowser を利用しておいて、表面上は別の WebBrowser を、というのが良いですね。という訳で、こっちのほうは別のエントリーで。

カテゴリー: 開発 パーマリンク