右クリックに***で実行を作る
◆ レジストリを追加
◆ HKEY_CLASSES_ROOT\(target)\shell\(command name)
◆ HKEY_CLASSES_ROOT\(target)\shell\(command name)
◆ サブメニューを作るなら SubCommands か ExtendedSubCommandsKey
右クリックメニューを追加したい
ソースコードのファイルは基本エディタで開くように関連付けをしていますしかし そのファイルを即実行したいということもあります
ダブルクリックを実行の方にしてしまうと 間違って実行してしまうリスクもあるので 基本はエディタにしたいです
かと言って コンソールから実行は面倒です
ということで 右クリックメニューに指定のプログラムで実行できるものを作ります
「Node.js で実行」「PHP で実行」「Python で実行」のようなものです
言語ごとに並ぶと右クリックメニューが長くなって邪魔なので プログラムで実行するグループを作って そのサブメニューとして表示します
Windows のデフォルトに「プログラムから開く」が存在しますが これは自動で項目が変わりますし 自分用にカスタマイズしづらいので使いません
右クリックメニューの追加方法
右クリックメニューはHKEY_CLASSES_ROOT\(右クリック条件名)\shell\(名前)
のレジストリに登録します
「右クリック条件名」 のところには拡張子の 「.js」 やフォルダの 「Folder」 や全拡張子のファイルの 「*」 などが入ります
「名前」 には好きな名前をつけます
拡張子なしのファイルもありますし 拡張子ごとにつくるのは手間なので 全ファイル * に対してプログラム名を並べることにします
プログラムで実行するものなので 名前は 「run」 にします
レジストリの場所は⇩になります
HKEY_CLASSES_ROOT\*\shell\run
サブメニューを作る場合はここに SubCommands か ExtendedSubCommandsKey を作ります
SubCommands
SubCommands の場合はHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore
の場所にあるコマンドストアからサブメニューに並べるコマンドを 「;」 区切りで書きます
コマンドストアの 「shell\(名前)」 の 「名前」 がコマンド名です
デフォルトで用意されてる Windows.XXXX が並んでいるのでそのコマンドを指定しても良いですし 自分でここに新規に作っても良いです
ググって見ると Subcommands を作ったキーの中に書けば良いと書いてるところもありましたが 間違いです
HKEY_CLASSES_ROOT\*\shell\run\shell\(名前)
を作っても認識されません
コマンドストアの場所に作る必要があります
ExtendedSubCommandsKey
コマンドストアの場所ではなくて好きなところに作りたい場合は ExtendedSubCommandsKey を使いますExtendedSubCommandsKey にはレジストリの場所を書きます
そのキーの 「shell\(名前)」 すべてがサブメニューになります
パスは HKCR の次から書けるので
*\shell\run\sub
のように書けます
この例だと run の中の sub というキーをサブコマンドの場所としているので コマンドストアみたいな外部を変更しなくても 新規に作った 「*\shell\run」 の中だけの変更で済みます
右クリックメニューから実行するレジストリ設定
今回の目的のものを ExtendedSubCommandsKey で作ったものがこれですWindows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\run]
@="Run"
"ExtendedSubCommandsKey"="*\\shell\\run\\sub"
[HKEY_CLASSES_ROOT\*\shell\run\sub]
[HKEY_CLASSES_ROOT\*\shell\run\sub\shell]
[HKEY_CLASSES_ROOT\*\shell\run\sub\shell\node]
[HKEY_CLASSES_ROOT\*\shell\run\sub\shell\node\command]
@="node \"%1\""
[HKEY_CLASSES_ROOT\*\shell\run\sub\shell\python]
[HKEY_CLASSES_ROOT\*\shell\run\sub\shell\python\command]
@="py \"%1\""
ファイルを右クリックすると 「Run」 が増えていてカーソルを合わせるとサブメニューに 「node」 と 「python」 が出ます
それぞれをクリックすると Node.js と Python でファイルが実行されます
PHP も追加するなら
[HKEY_CLASSES_ROOT\*\shell\run\sub\shell\php]
[HKEY_CLASSES_ROOT\*\shell\run\sub\shell\php\command]
@="php \"%1\""
を追加すればできます
こんな感じで簡単に追加していけます