プロセス終了時に実行するメソッドの指定

概要

hm.NETでは比較的複雑な「常駐型」のプログラムが組まれることも想定されています。
こういったプログラムで必要となるのが、

ユーザーのタイミングで秀丸がクローズされた時、後片付けの処理を実行する

というものです。

秀丸SetDetachMethod

  • C#側のソース

    返り値がIntPtrの関数(メソッド)を適当に定義します。

    Visual Studio で作成。HmTestClass03.dllとしてコンパイルのこと
    using System;
    
    namespace HmTestClass03
    {
        public class Class3
        {
            public static IntPtr OnDetachMethod()
            {
                System.Diagnostics.Trace.WriteLine("OnDetachMethod実行");
    
                return (IntPtr)1;
            }
    
        }
    }
    
  • 秀丸マクロ側のソース

    test01.macなどと適当に名前を付ける
    #HMNET = loaddll( hidemarudir + @"\hm.NET.dll" );
    
    #r = dllfuncw( #HMNET, "SetDetachMethod", currentmacrodirectory + @"\HmTestClass03.dll", "HmTestClass03.Class3", "OnDetachMethod" );
    

    秀丸を閉じることで、該当の秀丸プロセスが終了します。
    (タブモードであれば、タブそのものを閉じてタブを減らす行為をする)

    この時、秀丸が完全に終了する直前に OnDetachMethod が実行される、ということになります。

SetDetachMethodの利用は、常駐型モジュールやフォーム表示のモジュールでは必須

  • 実行した後、常駐し続けて何かを監視するようなプログラム
  • フォームのようなGUIを表示しておいて、秀丸の編集領域と情報を相互にやりとりし続けるようなプログラム

を組む場合には、この「SetDetachMethod」を利用した「後片付けをするメソッドの指定」は必須なものとなるでしょう。