|
アルビレオです。
>マクロの1行目に「loaddll "tkinfo.dll";」
>二行目に「#n = dllfunc("SetHeader", "Subject", "XXXXX");」
>を入れて実行したのですが、結果的には前回同様“Subject”に
>一文が表示されてしまいました。
すみません、ウソを書いてしまいました。
私自身も今まで勘違いしていたことがわかりました。
まず、$(ExecMacro,"...")はテンプレート中のどこに書いても結果は同じです。
ひとまずマクロの事は置いておいて、テンプレートを使ったときのカーソル位置
は
・To:が空ならTo:の位置
・To:が空でなくてSubject:が空ならSubject:の位置
・To:とSubject:が空でなければ$cの位置($cがなければ本文の先頭)
となっています。
そして$(ExecMacro,"...")はテンプレートの展開が終わり、カーソル位置が確定
してから呼び出されるようです。
つまりマクロ中で「dllfunc("SetHeader", "Subject", "XXXXX");」としても、
すでにカーソル位置が確定したあとなのでカーソル位置は変わらないようです。
というわけで、カーソル位置を本文の先頭にしたいだけなら「moveto 0,0;」を
使った方が簡単ですが、「To:やSubject:はマクロ側でセットしたい、マクロで
本文に挿入する文字列の位置はテンプレートの$cで指定した場所にしたい」とい
う場合は、
----テンプレート
$(SetHeader, To, "ダミー")$-
$(SetHeader, Subject, "ダミー")$-
こんにちは。
$c
$(ExecMacro, "test.mac")$-
----テンプレート終わり
----マクロ(test.mac)
loaddll "tkinfo.dll";
#n = dllfunc("SetHeader", "Subject", "XXXXX");
insert "abc";
----マクロ終わり
と書けばうまくいきました。
|
|