入門編 ~秀丸マクロを文字列で実行(応用)~

概要

hm.NETでは秀丸マクロを文字列で実行可能です。

前節を少し応用し、秀丸マクロ独自の機能を使ったメソッド(関数)を作成してみましょう。

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

Hm.Macro.Eval("秀丸マクロの文字列");
  • C#側のソース

    秀丸マクロ変数へとC#側から値を伝達(代入)出来るわけですから、
    秀丸マクロで提供されている関数も使いたい放題というわけです。

    MyTestForm.cs
    using System;
    using System.Windows.Forms;
    using Hidemaru;
    
    namespace HmTest
    {
        partial class HmTestForm
        {
            protected void MethodCreate()
            {
                System.Diagnostics.Trace.WriteLine("フォーム生成時");
    
                HmOutputPane("フォーム生成時にアウトプットパネルに出力");
            }
            private void HmOutputPane(String message)
            {
                Hm.Macro.Var["$message_tmp_hm_output_pane"] = message;
                Hm.Macro.Eval(@"
                    #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);
               ");
            }
    
            protected void MethodTick()
            {
                System.Diagnostics.Trace.WriteLine("チック時");
            }
            protected void MethodDestroy()
            {
                System.Diagnostics.Trace.WriteLine("フォームクローズ時");
            }
        }
    
    }
    
    
  • 秀丸マクロ側のソース

    前章の「HmNETTest.mac」と同一です。
    一度マクロを実行し、「デバッグモニター」にどのように順次表示されるか確認しましょう。

    PICTURE