IronPythonの例題のひとつとなります。
C#で利用するのと、全く同一です。
非常に典型的な作りであり、一番見慣れている形と言えるでしょう。
#PY = loaddll( hidemarudir + @"\hmPy.dll" ); #_ = dllfuncw(#PY, "DoString", R"IRONPYTHON( import clr clr.AddReferenceByPartialName('System.Windows.Forms') clr.AddReferenceByPartialName('System.Drawing') import System import System.Windows.Forms import System.Drawing from System.Drawing import * from System.Windows.Forms import * from System.Drawing import Point from System.Windows.Forms import Form, Button, Application # 現在のファイル名をフォームのタイトルに使うため curfilename = hm.Macro.Var["filename"] variable1 = 300 class MyForm(Form): def __init__(self): self.Text = curfilename self.Width = 450 self.b1 = Button() self.b1.Width = 240 self.b1.Height = 30 self.b1.Left = 20 self.b1.Top = 30 self.b1.Text = '秀丸マクロボタン(半角アイウエオ)' self.b1.Click += self.b1_Click self.Controls.Add(self.b1) def b1_Click(self, sender, earg): self.cd = ColorDialog() self.cd.Color = Color.Blue self.cd.AllowFullOpen = True self.cdret = self.cd.ShowDialog() sender.Text = curfilename if self.cdret == DialogResult.OK: self.BackColor = self.cd.Color f = MyForm() Application.Run(f) hm.Macro.Var["$recieve_f"] = f.ToString() # フォームを文字列化したものを返す。 f.Show() )IRONPYTHON" ); // IronPython内部のクラスインスタンスをそのまま文字列化したようなものが表示される。 message($recieve_f); freedll(#PY);