試しに、IEのかちかち音を消すツールを作ってみました。
ダウンロードは、こちらから。
やっぱり、かちかち音だから、かちかち山じゃなくちゃね。ということで、画像選びのほうが時間が掛かっていたり。
Visual Studio 2010 で作ったソース付きです。
要は、Internet Explorer が使っているレジストリを変更すればいい訳で、このレジストリを読み込むタイミングが WebBrowser の Navigate メソッドが呼ばれた時なんですね。
HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Explorer\Navigating\.Default
ソースは、こんな感じ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 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 を、というのが良いですね。という訳で、こっちのほうは別のエントリーで。