ここでは、.NET Frameworkに最初から搭載されているものの、
手動で参照を追加する必要があるdll(例えばSystem.Windows.Formなど)を読み込む方法を記載しています。
hmJSは、.NETのアセンブリの読み込みなどには対応しています。
しかし、根本的な部分で、hmJS の JavaScript は JScript ですのでガッチリとしたフルスペックの「クラス」の仕組み
は存在しません。
ですので、あくまでも、C#等で作成した.dll内で処理を済ませ、JavaScriptでは、それを呼ぶ、という方向性の方が、
見通しが良くなるハズです。
hmJSでは、「.dllへと値を渡す」こと・「.dllから値をもらうこと」に特化した方が上手くいきます。
しかし、このページでは、あえて「hmJS」の「スクリプト層」でゴリゴリと記述する例として紹介しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #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); |