hmJavaVMが持つ特別な関数一覧 その③
各メソッドの細かな「型情報」などは、Eclipse等で使用する際に自動的に表示されますので、
ここでは割愛します。
Javaから秀丸マクロへアクセスする関数
Java機能、文法や、巨大なライブラリ、様々なサードパーティや個人が作った膨大なライブラリを活かしつつも、
秀丸マクロの機能や各種値もほぼ全て使えるところが、
hmJavaVMの優れている所以です。
- 「秀丸マクロ」を「Java内から」実行
- 「秀丸マクロの変数」⇔「Javaの変数」を相互にやり取り。
の2つの手段で秀丸マクロを取り扱うことが出来ます。
-
Javaから秀丸マクロを実行
import hidemaru.Hm;
public class MyClass2 {
// この変数はマクロが終了しても、残る
static int staticCounter = 0;
public static long begin() {
// Java側から秀丸マクロの文を実行する。
Hm.Macro.doEval(
"menu \"細い線\", \"太い線\", \"*マーク\";"
);
// 秀丸マクロのmenu文の説明を参照。
// 秀丸マクロのmenu文は選択結果が「result」というシンボル変数に入るため、この値をJava側へと取得
int nMenuResult = (int)Hm.Macro.getVar("result");
Hm.debugInfo(nMenuResult);
return 1;
}
}

-
Javaから秀丸マクロの変数の「読み」「書き」
import hidemaru.Hm;
public class MyClass2 {
// この変数はマクロが終了しても、残る
static int staticCounter = 0;
public static long begin() {
// 秀丸マクロの「#aaa」という変数に「3」という数値を設定
Hm.Macro.setVar("#aaa", 3);
// 秀丸マクロの「$bbb」という変数に「あいうえお」という文字列を設定
Hm.Macro.setVar("$bbb", "あいうえお");
// 秀丸マクロとして一覧の文字列を実行
/*
* message($bbb);
* $ccc = $bbb + str(#aaa);
* message($ccc);
*
* 秀丸の「アウトプット枠」へと文字列を書き込む
* #OP = loaddll("HmOutputPane.dll");
* #ret = dllfunc(#OP, "Output", hidemaruhandle(0), $ccc);
* freedll(#OP)
*
* という文字列を実行する
*/
Hm.Macro.doEval(
String.join("\n",
"message($bbb);",
"$ccc = $bbb + str(#aaa);",
"message($ccc);",
"#OP = loaddll(\"HmOutputPane.dll\");",
"#ret = dllfunc(#OP, \"Output\", hidemaruhandle(0), $ccc);",
"freedll(#OP);"
)
);
// 上で秀丸マクロ変数として値を代入したものを取得
Hm.debugInfo( Hm.Macro.getVar("$bbb") );
// 秀丸がもともと提供している秀丸にて開いているファイル名を取得
Hm.debugInfo( Hm.Macro.getVar("filename2") );
// 秀丸が元々提供しているマクロシンボルとなるdate(日付曜日)
String hmdate = (String)Hm.Macro.getVar("date");
Hm.debugInfo( hmdate );
// 秀丸が元々提供しているマクロシンボルとなるcodepage(編集中テキストの文字コード番号)
int hmcp = (int)Hm.Macro.getVar("codepage");
Hm.debugInfo( hmcp );
return 1;
}
}
