試しに、IEのかちかち音を消すツールを作ってみました。
ダウンロードは、こちらから。
やっぱり、かちかち音だから、かちかち山じゃなくちゃね。ということで、画像選びのほうが時間が掛かっていたり。
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 を、というのが良いですね。という訳で、こっちのほうは別のエントリーで。