秀丸マクロ上の変数の値を読み取る・書き換える

概要

Hm.CppInvokeでは秀丸マクロで定義されている変数(秀丸マクロからあらかじめ提供されているもの、
ユーザーが独自に定義したもののどちらでも)を取得、 値を書き換えることが出来ます。
(※秀丸があらかじめ提供している読み取り専用のシンボルの値は書き換えることが出来ません)

秀丸マクロ上の変数の値を読み取る・書き換える

マクロ実行中のみ、読み取り・書き換え可能

Hm.Macro.Var["変数名"]
  • C#側のソース

    MyTestForm.cs
    using System;
    using System.Windows.Forms;
    using HmNetCOM;
    
    ...
        var fn1 = Hm.Edit.FilePath;
        System.Diagnostics.Trace.WriteLine(fn1);
        var fn2 = Hm.Macro.Var["filename2"];
        System.Diagnostics.Trace.WriteLine(fn2);
        Hm.Macro.Var["$bbdd"] = "文字列変数への代入";
        Hm.Macro.Var["#ccef"] = -33;
    
        // 秀丸マクロの数値の変数を取得する際は、以下のように一度(dynamic)を挟むこと
        var column = (int)(dynamic)Hm.Macro.Var["column"];
    
        // 上と同じようにdynamicで、こちらはユーザー定義の変数を取得
        var cccc = (int)(dynamic)Hm.Macro.Var["#cccc"];
    
    

    秀丸マクロ上の変数取得において、「数値変数」をC#側から取得する際には注意を要します。
    秀丸エディタは32bit版と64bit版が存在するので、どちらの版でも 共通のC#ソースにするためには、
    dynamicに一度キャストして型情報を問わないようにしておく必要があります。
    直接intでキャストすると、秀丸エディタ64bit版では、実行時にlong型をint型にキャストすることになるため、キャスト不可能な例外が発生してしまいます。