「hmPy・IronPython」のその他の例題 クリップボード内のファイルリストのペースト概要秀丸マクロとhmPyの例題のひとつとなります。 エキスプローラーなどで、「1つ」または「複数」のファイルをコピーした後 ダウンロード更新日 2017/12/15
秀丸マクロこの程度のことであれば、強力な.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 ); 他の応用例えば、特定の拡張子なら、 ライセンスパブリックドメインです。自由にお使いください。 |