C#の中から秀丸マクロを文字列

概要

C#の中から秀丸マクロを文字列で実行可能です。
一部の制限はありますが、通常の運用では困ることはないでしょう。

C#の中から秀丸マクロを文字列で実行可能

マクロ実行中のみ実行可能

Hm.Macro.Eval("秀丸マクロの文字列");

類似のものですが、「マクロを実行していない時にのみ、実行可能」な関数としてHm.Macro.Exec.Eval(...)があるので注意してください。

  • C#側のソース

    MyTest.cs
    using System;
    using HmNetPInvoke;
    
    ....
        var result = Hm.Macro.Eval(@"
            message (""abc"");
        ");
    
        if (result.Result > 0)
        {
            return "成功";
        } else
        {
            return "失敗";
        }
    
    

    次のようにすれば簡易的に変数へと数値や文字列を代入できますが、
    hm.NETが「マクロ変数への読み書き」をサポートするに対して、HmNetPInvokeでは、サポートされていないため、
    C#層だけでは、汎用的で高度なものは組みにくいと言えます。

    MyTest.cs
        string cmd = @"
            #TMP_OUTPUT_PANE_DLL = loaddll(""HmOutputPane.dll"");
            #ret=dllfunc(#TMP_OUTPUT_PANE_DLL, ""Output"",hidemaruhandle(0), ""$message_tmp_hm_output_pane"" + ""\r\n"");
            freedll(#TMP_OUTPUT_PANE_DLL);
        ";
    
        cmd = cmd.Replace("$message_tmp_hm_output_pane", @"あいう\r\n♫go");
    
        var result = Hm.Macro.Eval(cmd);
        if (result.Result > 0)
        {
            return "成功";
        } else
        {
            return "失敗";
        }