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

  • 概要

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

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

  • 秀丸マクロ

    この程度のことであれば、強力な.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行増えるだけです。