BeginEditMail/CancelEditMail/SaveEditMail関数(TKInfo.dll)(Ver7.22対応版)
 BeginEditMail関数は、秀丸メール本体上で、マクロによるメールの書き換えを許可します。
 SaveEditMail関数は、書き換えた内容を実際にメールとして保存します。
 CancelEditMail関数は、BeginEditMailを呼んだけれども保存したくなかった場合に呼び出すための関数です。

 BeginEditMail関数でメール書き換えを開始したら、CancelEditMail/SaveEditMail関数を呼ぶまで、他のメールを選択するような操作(たとえばSetMailIndex関数を呼ぶなど)はしないでください。そうした場合はSaveEditMail関数が失敗します。

 これらの関数は検索結果の一覧上でも使えます。


制限事項!
 秀丸メール本体上でBeginEditMail等を使ってメールのヘッダ部分を書き換える場合、SetHeader、SetHeader2、AddHeader、DeleteHeader, DeleteHeader2、SetHeaderUnited、DeleteHeaderUnitedの7種類のヘッダ書き換え関数を使ってのみ書き換えが可能です。
 SetHeader関数などで書き換えた内容は、SaveEditMail関数を呼ぶまでの間、秀丸メール本体内のエディタにはまったく反映されません。SetHeaderで書き換えたヘッダをCurrentHeader関数などで参照すると、SetHeaderする前の値が返ってきてしまいます。
 本文部分を書き換える場合、readonlyswitch文やbrowsemodeswitch文をうまく組み合わせて書き換えた後、SaveEditMail関数のパラメータ2に1を指定する必要があります。パラメータ2に0を指定すると、エディタ内での本文についての書き換え内容は破棄されます。
 なお、エディタ内でヘッダ部分を書き換えても、それらはすべて破棄されます。
 BeginEditMailした状態でSwitchHeaderView関数やSwitchOrikaeshi関数などの、エディタの表示内容を変更する系の関数を呼ばないでください。


パラメータ1(SaveEditMail関数)
 0を指定すると、メールが書き変わった後に、メール一覧の並び順がそのまま維持されます。
 1を指定すると、必要に応じてメール一覧がソートしなおされます。

 たとえば、Subject順でソートされていたメールの「Subject:」部分が書き換えられた時、パラメータ1の状態によってソートしなおされたり、されなかったりします。

 メールの並び順が変わってしまうと都合が悪い場合は0にしてください。たとえばフォルダ内のメールを全部書き換えるような処理をする場合は0でないとダメなはずです。


パラメータ2(SaveEditMail関数)
 0を指定すると、ヘッダ部分の書き換え内容のみが保存されます。
 1を指定すると、ヘッダ(SetHeader関数などで書き換えられた物)と本文の両方の書き換え内容が保存されます。


返り値(数値型)
 BeginEditMailおよびSaveEditMail関数は、成功すると1、失敗すると0を返します。
 CancelEditMail関数には返り値に意味はありません。


例(メモを書き換える例)
loaddll "tkinfo.dll";
#n = dllfunc("BeginEditMail");
#n = dllfunc("SetHeader","X-Memo","aaaa");
#n = dllfunc("SaveEditMail", 0, 0 );
例(本文を書き換える例)
loaddll "tkinfo.dll";
#n = dllfunc("BeginEditMail");
#r = readonly;
#b = browsemode;
if( #r ) readonlyswitch;
if( #b ) browsemodeswitch;
gofiletop;
insert "テストテスト\n";
#n = dllfunc("SaveEditMail", 0, 1 );
if( #r ) readonlyswitch;
if( #b ) browsemodeswitch;