2014年3月16日日曜日

ファイルを開かずに内容ををクリップボードにコピー

ファイルを開かずに中のデータをクリップボードにコピーする機能を右クリックメニューに追加する方法です。


“データをクリップボードにコピー” のメニューを付ける

  1. レジストリ キーを追加します。

    HKCU\Software\Classes\SystemFileAssociations\text\shell\clip\command

  2. clipキーに、以下の値を追加します。

    MUIVerb(文字列値)を作成して値のデータを、データをクリップボードにコピー
    Position(文字列値)を作成して値のデータを、データをBottom
    Icon(文字列値)を作成して値のデータを、データをimageres.dll,-148

    これらの値は、お好みで決めることができます。

  3. command キーの(既定) のデータを、cmd.exe /c clip < "%1"にします。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\SystemFileAssociations\text\shell\clip]
"MUIVerb"="データをクリップボードにコピー"
"Position"="Bottom"
"Icon"="imageres.dll,-148"

[HKEY_CURRENT_USER\Software\Classes\SystemFileAssociations\text\shell\clip\command]
@="cmd.exe /c clip < \"%1\""

"PerceivedType"="text"(.txt .ini .jsなどテキスト文書全般)に関連付けましたが、優先度が低いのでインストールされたアプリケーションによってはメニューがでない場合があります。

環境によってまちまちになってしまいますので、次は基礎的な関連付けの方法を説明します。


他の拡張子にも対応させる

拡張子の.htmlは、既定のブラウザを変更しているとメニューがでません。
.htmlにもメニューを表示するには次の手順を実行します。

HKEY_CLASSES_ROOT\.html の既定の値をみます。

例えばFirefoxを既定のブラウザにしていると、既定の値がFirefoxHTMLに変更されているので、その名前のキーにとびます。

HKEY_CLASSES_ROOT\FirefoxHTML


ここに先程のシェルメニューを追加すれば.htmlと.htmにもメニューが表示されます。

なぜ.htmにもでるのかというと、.htmの既定の値もFirefoxHTMLになっているからです。
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\FirefoxHTML\shell\clip]
"MUIVerb"="データをクリップボードにコピー"
"Position"="Bottom"
"Icon"="imageres.dll,-148"

[HKEY_CLASSES_ROOT\FirefoxHTML\shell\clip\command]
@="cmd.exe /c clip < \"%1\""

わかりやすいように、HKEY_CLASSES_ROOTに書き込む例にしましたが、実際には、HKCU\Software\Classes以下の同項目に追加した方が良いかもしれません。
HKEY_CLASSES_ROOTHKCU\Software\ClassesHKLM\SOFTWARE\Classesのエイリアスです。

ひとつひとつ設定しきれない場合、すべてのファイルに関連付けてしまう選択もあります。

HKEY_CLASSES_ROOT\*\shell

すべてのファイルにメニューがでます。対応していないものの内容はコピーできないだけで実行しても特に不具合はありません。