入門編 ~秀丸マクロを改めて実行(ファイル指定編)~

概要

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

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

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

ここでは、ファイルを指定して実行する方法を示します。

秀丸マクロを改めて実行

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

Hm.Macro.Exec.File("マクロファイルのフルパス")
  • 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()
            {
                // このdllがあるディレクトリ
                string asmLocation = System.Reflection.Assembly.GetExecutingAssembly().Location;
                string dir = System.IO.Path.GetDirectoryName(asmLocation);
    
                // マクロを実行していない時
                if (!Hm.Macro.IsExecuting) {
                    // 「SubTest.mac」を実行
                    var result = Hm.Macro.Exec.File(dir + "/" + "SubTest.mac");
    
                    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プロパティ

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

  • C#から実行される秀丸マクロ側のソース

    C#のソース中に従う。今回の例では、SubTest.macというファイル名
    debuginfo 2;
    debuginfo "test test\n";
    
    endmacro "最後まで実行出来た";
    

    通常の秀丸マクロと同じですが、endmacroの最後に文字列を引数としておくことで、
    該当のendmacroまで実行した時に、その文字列を取得することが出来ます。

  • 秀丸マクロ側のソース

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