hmPy (秀丸マクロ用 .NET Framework ライブラリ via IronPython)概要IronPythonを用いて、秀丸マクロで「.NET Frameworkの多くの機能をシームレスに近い形で利用する」ためのライブラリとなります。 ダウンロード![]() 更新日 2023/04/26
for 秀丸エディタ 32bit版 ![]() 更新日 2023/04/26
for 秀丸エディタ 64bit版 動作環境
インストール
特徴
利用シーン
IronPythonである理由。
秀丸マクロとIronPythonの連携
秀丸のjsmodeのような関数群が利用できる#PY = loaddll( hidemarudir + @"\hmPy.dll" ); // 以下の文字列を「IronPythonの環境スコープへと追加書き込みし、追加分だけ実行する」 #_ = dllfuncw(#PY, "DoString", R"IRONPYTHON( from hmPy import * message("あいう", "それで"); title("タイトルを変更"); title(-1); # マクロ終了後も維持 )IRONPYTHON" ); freedll(#PY); 一番簡単なソース例「a」に「3」、「b」に「10」を定義し、足しこんで表示。 #PY = loaddll( hidemarudir + @"\hmPy.dll" ); // 以下の文字列を「IronPythonの環境スコープへと追加書き込みし、追加分だけ実行する」 #_ = dllfuncw(#PY, "DoString", R"IRONPYTHON( a = 3 b = 10 hm.Macro.Var["#a"] = a # python空間 ⇒ 秀丸マクロ空間へ代入 hm.Macro.Var["#b"] = b # python空間 ⇒ 秀丸マクロ空間へ代入 # 秀丸マクロとして文字列を評価して実行 hm.Macro.Eval( r""" message(str(#a)); message(str(#b)); """ ); c = a + b hm.debuginfo(c) # DebugMonitorに表示。 hm.Macro.Var["#c"] = c # python空間 ⇒ 秀丸マクロ空間へ代入 )IRONPYTHON" ); // 秀丸マクロ空間に代入されている変数は、当然pythonの外から見える message(str(#c)); freedll(#PY); ![]() .NET FrameWork を使った簡単なソース例.NET FrameWorkを使って、ダイアログ表示 #PY = loaddll( hidemarudir + @"\hmPy.dll" ); #_ = dllfuncw(#PY, "DoString", R"IRONPYTHON( import clr # .NETが使えるようにする。 import System # Systemのシンボルを読み込み clr.AddReferenceByPartialName('System.Windows.Forms') # System.Windows.Forms を使えるようにする。 System.Windows.Forms.MessageBox.Show( "秀丸からのメッセージ", "秀丸からのタイトル", System.Windows.Forms.MessageBoxButtons.YesNoCancel ) )IRONPYTHON" ); freedll(#PY); ![]() フォームを利用した簡単な例#PY = loaddll( hidemarudir + @"\hmPy.dll" ); #_ = dllfuncw( #PY, "DoString", R"IRONPYTHON( import clr clr.AddReferenceByPartialName('System.Windows.Forms') clr.AddReferenceByPartialName('System.Drawing') from System.Windows.Forms import * from System.Drawing import * class IronPythonForm(Form): def __init__(self): self.Text = 'こんにちわ' self.Size = Size(400, 200) self.btn = Button() self.btn.Location = Point(16, 16) self.btn.Width = 200 self.btn.Text = "クリック" self.btn.Click += self.btn_Click self.count = 0; self.Controls.Add(self.btn) def btn_Click(self, sender, e): self.count += 1 MessageBox.Show( "今開いているファイルは…\n" + hm.Macro.Var['filename2'] ); hm.OutputPane.Output(str(self.count) + "\r\n") f = IronPythonForm() f.ShowDialog() )IRONPYTHON" ); freedll( #PY ); その他解説
ライセンス
|