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

概要

hm.NETでは難しく、秀丸マクロでは簡単な分野がある。

hm.NETなら簡単だが、秀丸マクロでは難しいこと。

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

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

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