「hmV8」のその他の例題 クリップボード内のファイルリストのペースト

概要

秀丸マクロとhmV8の例題のひとつとなります。

エキスプローラーなどで、「1つ」または「複数」のファイルをコピーした後
秀丸に張り付けると、「ファイル名のフルパス名(一覧)がペーストされる」といったものを作ってみましょう。

PICTURE

秀丸マクロ

この程度のことであれば、強力な.NETであれば、数行で情報を獲得できます。

#JS = loaddll( hidemarudir + @"\hmV8.dll" );

disabledraw;

#_ = dllfuncw(#JS, "DoString", R"JS(

let LibForms = host.lib("System.Windows.Forms");

let Clipboard = LibForms.System.Windows.Forms.Clipboard;
let files = Clipboard.GetFileDropList();

// ファイルコピー属性
if (files.Count > 0) {

    hm.Macro.Eval("begingroupundo;");

    // 順次リストからファイル名を取得して、秀丸へと挿入
    for (let f of files) {
        hm.Macro.Var["$filename"] = f;
        hm.Macro.Eval( f => { /*
          insert $filename + "\n";
        */ } );
    }

    hm.Macro.Eval("endgroupundo;");

// ファイルコピーの属性ではない
} else {

    // ファイル属性じゃないのであれば、秀丸の本来のペースト機能にゆだねる。
    hm.Macro.Eval( "paste;" );

}

)JS"
);

enabledraw;

// 解放
freedll(#JS);

他の応用

例えば、特定の拡張子なら、
ファイルをコピーして秀丸上でペーストすると、その中身の文字列をペーストする、
などというのもいとも簡単に実装できるでしょう。
上記のプログラムが4、5行増えるだけです。