マクロ作成のヒント・テキストファイルの処理(Ver6.01対応版)
 秀丸メール内でマクロを使ってテキストファイルを処理する方法は2つあります。1つはダミーの新規メールを起動して、そこでinsertfile文とsaveas文を使って処理する方法、もう1つはrunsync2文などを使って秀丸エディタを起動し、その秀丸エディタ側で処理する方法です。
●秀丸エディタ側で処理させる例
 秀丸エディタ(hidemaru.exe)のパスは、hidemarudirで求まります。したがって、

 runsync2 "\"" + hidemarudir + "\\hidemaru.exe\" /xテキスト処理.mac";
 のようにすればいいです。呼び出されたテキスト処理.mac側では、
openfile "c:\\abc.txt";
... 各種処理
saveexit;
 のようにするか、または、"c:\\abc.txt"が既に開いている場合も想定して作るなら、
$file = "c:\\abc.txt";
#me = hidemaruhandle(0);
#i = findhidemaru( $file );
if( #i != -1 ) setactivehidemaru #i;
... 各種の処理...
if( hidemaruhandle(0) != #me ) {
    save;
    setactivehidemaru #me;
    exit;
} else {
    saveexit;
}
 のように処理すればいいです。

 マクロファイルを2つに分けたくない場合には、tkinfo.dllをロードしてからdllfunc("IsHidemaruMail")が0以外かどうかで判断して動作を切り替えてください。


●秀丸メール内の新規メール用エディタを使う例
 新規メールを起動して、そこでSwitchHeaderView関数を使ってヘッダを「表示しない」に切り替えれば、そこのメールエディタをテキストエディタのように扱うことができます。ただし、openfileやsave文は使えないので、insertfile文でファイルを読み込み、保存の時はsaveas文を使うような形になります。

 アドレス帳用のファイルを読み込んで全置換する例を示します。
loaddll "tkinfo.dll";
#n = dllfunc("NewMail");
#headerView = dllfunc("HeaderView");
#n = dllfunc("SwitchHeaderView", 0);
message "a";
gofiletop;
beginsel;
gofileend;
delete;
openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
$path = getregstr("HomeDir") + "AdrBook.txt";
closereg;
insertfile $path;
clearupdated
replaceall "@abc.com", "@xyz.com";
if( updated ) {
    saveas $path;
}
#n = dllfunc("SwitchHeaderView", #headerView);
quit;

戻る