C++の中から秀丸マクロを文字列で実行可能です。 一部の制限はありますが、通常の運用では困ることはないでしょう。
マクロ実行中のみ実行可能
decltype(Hm.Macro)::IResult Hm.Macro.doEval(wstring expression);
類似のものですが、「マクロを実行していない時にのみ、実行可能」な関数としてHm.Macro.Exec.dEval(...)があるので注意してください。
#include "HmCppInvoke.h"
using
namespace
Hidemaru;
std;
extern
"C"
__declspec
(
dllexport
)
THmNumber
test() {
Hm.funcDllExport();
try
{
auto result = Hm.Macro.doEval(LR"MACRO(
message(
"abc"
);
)MACRO");
// 失敗した場合は、getResult()は0以下となる。必ずしも0と等しいわけではないので注意。
if
(result.getResult() > 0)
// 成功
}
else
// 失敗
// 以下の方法で判定するのが自然かもしれない。
(result.getException() == nullopt) {
Hm.OutputPane.output(L
"成功"
"失敗"
// nullopt は 偽値として認識するので、以下でも良い。
(! result.getException()) {
catch
(exception e) {
Hm.OutputPane.output(Text::Encoding::utf8_to_utf16(e.what()));
return
1;