コマンドバーにボタンを追加

Windows7のコマンドバーネタ(備忘録)です(^^ゞ

会社のPCがやっとXPからWindows7になりました。ええ、やっとです。XPのサポートが完全に終了したので、たぶん、仕方なくです(笑) どうせなら、Windows8.1にして欲しいものです。

さて、Windows8以降はエクスプローラシェルにもリボンUIが採用され、Vista/7のフォルダウィンドウの上部にくっついていたコマンドバーが消えてしまいました。Windows8以降のフォルダウィンドウはなかなか使い勝手よく、色んな設定をわざわざコントロールパネルを辿らずとも変更できるのですが・・・Windows7ではその辺使い勝手が悪いです。まぁ、見た目は圧倒的にWindows7の方が好きなのですが・・・。

あ、そうそう、フォルダウィンドウ内で、CTRLキーを押しながらマウスホイールを回すとアイコンサイズが変わるって知ってました? おいら、今日初めて知った・・・。ちょー便利。

と、そんなことは、どーでもよく。。。

隠し属性のファイルの表示・非表示を簡単に切り替えるようにしたくて、コマンドバーにスクリプトを登録しました。
toggle

コマンドバーへのボタン追加は、3年ぐらい前にコマンドバーの記事を書いていたので、隠し属性のファイルの表示・非表示を行うスクリプトを書いて、レジストリに登録するだけ。

/*
  隠しファイルの表示・非表示トグル スクリプト
  ちょいと変更 at 2014/4/28
*/
(function()
{
  var wShell = WScript.CreateObject("WScript.Shell")

  try
    {
      var Key="HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\Hidden";
      var Value = parseInt(wShell.RegRead(Key));

      // レジストリ・キー(Key)の値(Value)が、1の時は非表示、2の時は表示なので入れ替え。
      // ・・・逆だったっけ?ま、いいや。
      wShell.RegWrite(Key,(Value & 1) + 1,"REG_DWORD");

      //現在開いているフォルダウィンドウのコレクションを得る。
      var sWindows = WScript.CreateObject("Shell.Application").Windows();

      /*
      現在開いているフォルダの数だけ、ループを回して更新する。
      Itemメソッドで得られるオブジェクトはInternetExplorerオブジェクトなので、
      Refresh()メソッドで表示を更新させる(F5キーを押すのと同じ)。
      */ 
      var i = sWindows.Count - 1;
      while(i >= 0)
        sWindows.Item(i--).Refresh();
    }
  catch(e)
    {
      WScript.Echo(e);
    }
})(); 

レジストリへの登録は「エクスプローラー(Windows7)のコマンドバーにボタンを追加する」をご参考に。