概要
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#側のソース
「JScriptのjsmode」と「.NET 4.x or .NET 5.x以降」の組み合わせなら、
「javascriptのオブジェクトや関数」もC#に渡せる
C#側のソース
秀丸マクロ側のソース
JavaScriptの関数を一気に登録したり、C#⇔JavaScript間を変数などもやり取りする簡易関数の作成
C#側のソース
秀丸マクロ側のソース
jsmodeがWebView2で、.NET5.0(6.0以降も同様)の場合、メソッドが呼び出せない。プロパティなら読み書き出来る
C#側のソース
秀丸マクロ側のソース
JavaScriptの層でラップすればギリギリ使えなくはない感じ
C#側のソース
秀丸マクロ側のソース