概要
さて、前節ではHm.Macro.Exec.doEval(...)を使った文字列での実行をしました。
これまでの秀丸の様々なメソッドの半数ほどは、「秀丸マクロ実行中のみ実行可能」というものが散見されたはずです
すなわち、一般的には「非同期中」は「秀丸マクロ実行中ではない」ため、
このため、Hm.Macro.Exec.doEval(...)のマクロへと値を伝達しようとしても、「マクロ実行中ではない」ため、Hm.Macro.setVar(...) などが利用できず、
値を伝搬するのも難しいという状況になります。
この問題を一気に解決するのが、「Hm.Macro.Exec.doMethod(...)」です。
Hm.Macro.Exec.doMethod(...)は、指定のC++メソッドを「改めて新規の秀丸マクロ実行中」にしつつ呼び出せ、
という命令となります。
秀丸マクロを改めて実行
マクロを実行していない時にのみ、実行することが出来ます。
decltype(Hm.Macro)::IResult Hm.Macro.Exec.doMethod(wstring message_parameter, THmMacroDoMethodType delegate_method)
呼び出せるメソッドは
static THmNumber your_method(wstring message_parameter)
の形です。
- 通常の関数
- static なクラスメソッド
(=インスタンスメソッドではないという意味)
を呼び出すことができます。
publicかprivateかは問いません。
-
C++側のソース
-
秀丸マクロ側のソース