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

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)のコマンドバーにボタンを追加する」をご参考に。

コマンドバーにボタンを追加」への3件のフィードバック

  1. コマンドバーにボタンを追加するの記事大変参考になりました。

    ただ、自分の環境ではCドライブ限定の動作になってしまいましたので
    他のドライブでも動かすには、追加設定が必要でしょうか?

    またファイル選択時と非選択時に設定が分かれていますが
    常時ボタン表示したい場合、両方に設定を記述するのでしょうか?
    「整理」のように常時ボタンが表示される設定場所があるかと思いましたが
    見つけることができず、できれば教えていただきたいと思います

    いきなりの質問ですが回答いただけると幸いです

  2. なかがわ のコメント:

    >コウキさん、

    Cドライブ以外の別ドライブのフォルダではボタンが表示されない、って事でしょうか?
    自分のところではCドライブ以外のフォルダでも問題ないのですが・・・。

    考えられるのは、そのドライブのアクセス権(ACL/セキュリティ設定)関連か、
    そのドライブが何か特殊なファイルシステムでフォーマットされているか・・・ぐらいしか思いつきませんが、
    何とも言えません、すみません(m_m)

    常に表示させるレジストリ設定があるのかは以前調べた限りではありませんでした。
    もともとマイクロソフトでは公式にドキュメント化していない方法なので・・・。
    ご指摘のように、選択時、非選択時の両方に設定を記述するしかないと思います。

  3. 回答ありがとうございます。前記述の原因がわかりましたので報告させていただきます。

    Windows7のフォルダ判定は、
    音楽ファイル(mp3など)の入っているフォルダをミュージックフォルダと認識するようで
    ミュージック{94d6ddcc-4a68-4175-a374-bd584a510b78}に
    一般項目{5c4f28b5-f869-4e84-8e60-f11db97c5cc7}と同じ設定をしたら直りました

    自分はミュージックフォルダ = C:Users[ユーザー名]Music のことだと勘違いしてました

    Dドライブはデータ保管庫としてつかっていたものでこのような現象が起きたようです

    ちなみに自分が追加したのは「上へ」ボタンです
    “InfoTip”=”上に移動します”
    “Title”=”上へ”
    Command 既定値 = wscript.exe C:My_EffectAlt_up.vbs

    Alt_up.vbsファイルの中身
    CreateObject(“WScript.Shell”).SendKeys “%{up}” です

    常に表示させるレジストリ設定は、情報が開示されるまで待つことにします。

コメントは停止中です。