最終更新日 2024-03-19

フォームを利用するパターン

概要

hm.NETとC#を使い、フォームを表示するような機能を制作してみましょう。

フォームを制作するパターン

  • C#側のソース

    フォームを利用する時のコツは、フォームのインスタンスを継続的でstaticな変数に入れて維持しておくことと、
    SetDetathMethodを利用して、秀丸が閉じた時に、フォームも閉じるようにすることです。
    HmTestClass05.dllとしてコンパイルのこと
    using System;
    using System.Windows.Forms;
    
    namespace HmTestClass05
    {
        class MyForm : Form
        {
            public MyForm()
            {
    
            }
        }
    
        public class Class5
        {
            public static Form form;
    
            public static IntPtr CreateForm()
            {
                if (form == null || !form.Visible) {
                    form = new MyForm();
                }
    
                form.Show();
                return (IntPtr)1;
            }
    
            public static IntPtr OnDetachMethod(IntPtr reason)
            {
                if (form != null)
                {
                    form.Close();
                    form = null;
                }
    
                return (IntPtr)1;
            }
    
        }
    }
    
  • 秀丸マクロ側のソース

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

    マクロを実行するとフォームが表示されます。
    秀丸を閉じるとOnDetachMethodが実行されますので、フォームも閉じられます。