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

  • 概要

    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」と同一です。
      一度マクロを実行し、「デバッグモニター」にどのように順次表示されるか確認しましょう。