秀丸マクロとhmPyの例題のひとつとなります。
エキスプローラーなどで、「1つ」または「複数」のファイルをコピーした後
秀丸に張り付けると、「ファイル名のフルパス名(一覧)がペーストされる」といったものを作ってみましょう。
この程度のことであれば、強力な.NETであれば、数行で情報を獲得できます。
秀丸マクロではその情報を引き出すだけでOKでしょう。
// 0 とはクリップボードがテキスト(純粋テキストでなくともテキストとして扱えるものも含む) if (getclipboardinfo( 0 )) { paste; endmacro; } // 以下クリップボードはテキストではない時の処理となる #PY = loaddll( hidemarudir + "\\" + "hmPy.dll" ); if (!#PY) { message( "hmPyが導入されていないようです。" ); endmacro; } disabledraw; // クリップボードにファイル(のリスト)をコピーしてるものと想定し、countにファイル数を入れる。 // ファイルリストのコピーでなければ、カウントは0 #_ = dllfuncw( #PY, "DoString", R"IPY( import clr clr.AddReference('System.Windows.Forms') from System.Windows.Forms import Clipboard files = Clipboard.GetFileDropList() count = files.Count if count == 0: # 秀丸の本来のペースト機能にゆだねる。 # (どうせテキストではないので秀丸は何もしなだろう…。) hm.Macro.Eval(r""" paste; """); # ファイル(のリスト)がクリップボードに入っているならば else: hm.Macro.Eval("begingroupundo;"); # 順次リストからファイル名を取得して、秀丸へと挿入 for f in files: hm.Macro.Var["$filename"] = f hm.Macro.Eval(r""" insert $filename + "\n"; """); hm.Macro.Eval("endgroupundo;") )IPY" ); enabledraw; freedll( #PY );
例えば、特定の拡張子なら、
ファイルをコピーして秀丸上でペーストすると、その中身の文字列をペーストする、
などというのもいとも簡単に実装できるでしょう。
上記のプログラムが4、5行増えるだけです。
パブリックドメインです。自由にお使いください。