|
以下のサブルーチンで解決できました。
また、execeventmacro というコマンドを提案いたします。
そして、マクロヘルプの execeventmacro のページに
・openfile, tagjump, directtagjump などにより開かれたファイルに対して自動
起動マクロが実行されない旨
・execeventmacro により明示的に自動起動マクロを呼び出すことによりそれに対
処できる旨
を記載していただけると助かります。
ご検討よろしくお願いいたします。
// 指定されたファイルを開く。
// また、ファイルを開いた直後の自動起動マクロが設定されている場合にはそれを
実行する。
// Param: string 開くファイルのパス
OPENFILE_EX:
openfile $$1;
call EXEC_EVENT_MACRO "Opened";
return;
// タグジャンプする。
// それにより新しくファイルが開かれた場合、ファイルを開いた直後の自動起動マ
クロを実行する。
// Return: タグジャンプに成功した場合は true そうでなければ false
TAGJUMP_EX:
##count = hidemarucount;
tagjump;
if (!result) return false;
if (##count < hidemarucount) call EXEC_EVENT_MACRO "Opened";
return true;
// ダイレクトタグジャンプする。
// それにより新しくファイルが開かれた場合、ファイルを開いた直後の自動起動マ
クロを実行する。
// Return: ダイレクトタグジャンプに成功した場合は true そうでなければ false
DIRECTTAGJUMP_EX:
##count = hidemarucount;
directtagjump;
if (!result) return false;
if (##count < hidemarucount) call EXEC_EVENT_MACRO "Opened";
return true;
// 引数で指定した種類の自動起動マクロを実行する。
// 自動起動マクロが登録されていない場合には何もしない。
// ※このサブルーチンを実行するとレジストリが閉じられます。
// Param: string 自動起動マクロの設定を保持しているレジストリのキー名から
// "EventMacro" プレフィックスを取り除いた文字列
EXEC_EVENT_MACRO:
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
if (!result) return;
$$macro = getregstr("EventMacro" + $$1);
closereg;
if ($$macro == "") return;
execmacro $$macro;
return;
|
|