ここでは、.NET Frameworkに最初から搭載されているものの、
手動で参照を追加する必要があるdll(例えばSystem.Windows.Formなど)を読み込む方法を記載しています。
hmJSは、.NETのアセンブリの読み込みなどには対応しています。
しかし、根本的な部分で、hmJS の JavaScript は JScript ですのでガッチリとしたフルスペックの「クラス」の仕組み
は存在しません。
ですので、あくまでも、C#等で作成した.dll内で処理を済ませ、JavaScriptでは、それを呼ぶ、という方向性の方が、
見通しが良くなるハズです。
hmJSでは、「.dllへと値を渡す」こと・「.dllから値をもらうこと」に特化した方が上手くいきます。
しかし、このページでは、あえて「hmJS」の「スクリプト層」でゴリゴリと記述する例として紹介しています。
#JS = loaddll( hidemarudir + @"\hmJS.dll" ); #_ = dllfuncw( #JS, "DoString", R"( var addlib = host.lib("System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"); var TForms = addlib.System.Windows.Forms; var TForm = TForms.Form; var frm= new TForm(); frm.Text = "こんにちわ"; var iClicked = 0; var TButton = TForms.Button; var btn = new TButton(); btn.Text = "クリック"; btn.Left = 16; btn.Top = 16; btn.Click.connect(function (sender, args) { iClicked++; hm.debuginfo("ボタンが押されたよ!!"); TForms.MessageBox.Show(iClicked.toString()); hm.Macro.Var('$count', iClicked.toString()); // 秀丸マクロとして一連の文字列を実行 hm.Macro.Eval( function() { /* // アウトプット枠へ出力 #OP = loaddll("HmOutputPane.dll"); #ret = dllfunc(#OP, "Output",hidemaruhandle(0), $count); freedll(#OP); */ } ); }); frm.Controls.Add(btn); frm.ShowDialog(); )"); freedll(#JS);