jsmode で .NET の COM を作る

概要

jsmodeには、「JScript」と「WebView2」の2つがあります。

- JScript WebView2
.NET 4.x
.NET 5.x - .NET 8.x
(△ … hidemaruCompat.createobject など、同期タイミングのみ)


この両方で使えるCOMオブジェクトを .NET4.x で作ることが出来ます。

しかしながら、現在のところ、.NET5.x - .NET8.xでは、
「JScript」の「createobject関数」では動作しますが、
「WebView2」の「createobject関数」では動作の確認が取れていません。
(秀丸マクロ実行中=同期タイミング限定であれば、.NET5.x と WebView2の組み合わせでも、秀丸マクロのhidemaruCompat.createobect経由であれば、動作します。)

jsmode用には必ず interface が必要

C#側のソース

MyTestForm.cs
using System;
using System.Runtime.InteropServices;

namespace Test
{
    public interface IFoo // 外部から利用できるメソッドに対してinterfaceの定義が必須になる。
    {
        String foo(int a);
    }

    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.None)] // これは必須
    [Guid("3BDB20EF-09BE-4B53-B662-8A9B584976E1")] // GUIDはそれぞれのclassで生成しなおすこと。
    public class Foo : IFoo // インターフェイスを継承すること
    {
        public String foo(int a)
        {
            return "Hello world!" + a.ToString() + a.ToString();
        }
    }
}