入門編 ~秀丸マクロを改めて実行(文字列編)~

概要

hm.NETでは「秀丸マクロが実行されていない時、秀丸マクロを改めて実行する」ことが出来ます。

マクロを実行していない時にのみ、実行可能なため、
ほとんどのシチュエーションでは「async await Task.Run Thread Timer」といったものをキーワードとする
「非同期のメソッド」にて使うこととなるでしょう。

文字列を記述して直接実行することもできますし、
ファイルを指定して実行することもできます。

ここでは、文字列で実行する方法を示します。

秀丸マクロを改めて実行

マクロを実行していない時にのみ、実行することが出来ます。

Hm.Macro.Exec.Eval("マクロ命令群の文字列")
  • C#側のソース

    MyTestForm.cs
    using System;
    using System.Windows.Forms;
    using Hidemaru;
    
    namespace HmTest
    {
        partial class HmTestForm
        {
            protected void MethodCreate()
            {
                System.Diagnostics.Trace.WriteLine("フォーム生成時");
            }
    
            protected void MethodTick()
            {
                // マクロを実行していない時
                if (!Hm.Macro.IsExecuting) { 
                    // 「あいうえお」という文字列を編集中のテキストに挿入。
                    var result = Hm.Macro.Exec.Eval(@"
                        $test_mes = ""あいうえお"";
                        insert $test_mes;
    
                        endmacro ""最後まで実行出来た"";
                    ");
    
                    if (result.Message == "最後まで実行出来た")
                    {
                        System.Diagnostics.Trace.WriteLine("実行成功");
                    } else
                    {
                        System.Diagnostics.Trace.WriteLine("実行失敗");
                    }
                }
                System.Diagnostics.Trace.WriteLine("チック時");
            }
            protected void MethodDestroy()
            {
                System.Diagnostics.Trace.WriteLine("フォームクローズ時");
            }
        }
    
    }
    
    
    
    • endmacro の後ろの文字列

      「秀丸マクロ内の endmacro の後ろの文字列 が肝となります。

    • Messageプロパティ

      endmacroまで実行できたならば、Messageプロパティにその値が入っていることでしょう。

    • Errorプロパティ

      何か明確な例外が発生した場合はErrorプロパティに例外を捕捉出来ることもありますが、
      情報としての確実性に欠けます。
      原則的には、「endmacroの後ろの文字列」でどこまで実行できたのかを、把握するのが適切です。

    • Resultプロパティ

      実行の状態によって返ってくる値が異なります、参考程度の値であり、あまりこの値に基づいたプログラムを記述するべきではありません。

  • 秀丸マクロ側のソース

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