タブー編 ~C#側から秀丸のアクティブウィンドウ切り替えはダメ~

  • 概要

    秀丸マクロには容易に出来て、hm.NETでは困難な事項が1つあります。

    秀丸マクロは「時間を跨いだ継続処理」は苦手とします。
    例えば、「10分間継続して実行されつづける秀丸マクロ」、などというのは現実的ではありません
    その間、秀丸を操作出来なくなってしまうからです。

    一方、hm.NETは「時間を跨いだ処理の継続」を得意とします。
    秀丸を実行している間、ずっと実行されているようなプログラムを制作したとしても
    全く問題はありません。

  • C#側から別秀丸へのアクティブウィンドウ切り替えはこのましくない

    例えば、以下のようにC#側から別秀丸プロセスを生み出したり、
    アクティブウィンドウを切り替えたりする、といのはこのましい行為ではありません。

    • C#側のソース

      MyTestForm.cs
      using System;
      using System.Windows.Forms;
      using Hidemaru;
      
      namespace HmTest
      {
          partial class HmTestForm
          {
              protected void MethodCreate()
              {
                  System.Diagnostics.Trace.WriteLine("フォーム生成時");
                  try
                  {
                      var ret = Hm.Macro.Eval(@"openfile ""abc"";");
                      System.Diagnostics.Trace.WriteLine(ret.Message);
                      System.Diagnostics.Trace.WriteLine(ret.Result);
                      System.Diagnostics.Trace.WriteLine(ret.Error);
      
                  } catch(Exception e)
                  {
                      System.Diagnostics.Trace.WriteLine(e);
                  }
      
              }
              protected void MethodTick()
              {
                  System.Diagnostics.Trace.WriteLine("チック時");
              }
              protected void MethodDestroy()
              {
                  System.Diagnostics.Trace.WriteLine("フォームクローズ時");
              }
          }
      
      }
      
    • 秀丸マクロ側のソース

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