「hmLN」で既存の.NETのクラスを込みこむ概要ここでは、.NET Frameworkに最初から搭載されているdllを読み込む方法を記載しています。 スクリプト層hmLNの設計方針を考慮すると、スクリプト層でゴリゴリと記述することは避けるべきです。 C#等で作成した.dll内で処理を済ませる方向性の方が、大抵は見通しが良くなるでしょう。 しかし、このページでは、あえて「hmLN」の「スクリプト層」でゴリゴリと記述する例として紹介しています。 フォームの実装秀丸 v8.66ですので、マクロとwinform.luaを1つにするのが有力な選択肢となるでしょう。 PublicKeyTokenの調べ方はネットで検索してください。 #MNG = loaddll( hidemarudir + @"\hmLN.dll" ); if ( !#MNG ) { message("hmLN.dllが導入されていません"); endmacro; } #_ = dllfuncw(#MNG, "DoString", R"MNG( -- Load Forms clr.System.Reflection.Assembly:Load("System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"); local Forms = clr.System.Windows.Forms; -- create a local variable with a namespace local iClicked : int = 0; Forms.Application:EnableVisualStyles(); -- call a static method do (frm, cmd = Forms.Form(), Forms.Button()) -- create a from and button in a using block frm.Text = 'こんにちわ♬'; cmd.Text = 'クリック'; cmd.Left = 16; cmd.Top = 16; cmd.Click:add( -- 「add」はイベントハンドラ追加。「remove」だとイベントハンドラ削除 function (sender, e) : void iClicked = iClicked + 1; Forms.MessageBox:Show(frm, clr.System.String:Format('Clicked {0:N0} times!', iClicked), 'Lua', Forms.MessageBoxButtons.OK, Forms.MessageBoxIcon.Information); end); frm.Controls:Add(cmd); Forms.Application:Run(frm); end; )MNG" ); freedll( #MNG ); 実行イメージ![]() |