開いている mail で ExecAt+SaveDraftNo.08414
ひろ さん 03/02/09 00:12
 
 秀まるおさん今日は、ひろです。
 本体で開いているメールを保存後終了しようと末尾のマクロを実行すると、
スレッドの処理に失敗します。そして今度は、その時のメッセージに従ってデ
バッグ・レベルを 3 にすると、今度は無限ループになるようです。
 こちらの環境は、Windows98+IE6.0+鶴亀 Ver.2.39 です。
#i = 1;
$file = dllfuncstr( "MailFilePath" );
#offset = dllfunc( "MailFileOffset" );
while( #i < hidemarucount ){
  #handle = hidemaruhandle( #i );
  if( $file == dllfuncstr("ExecAt", #handle, "MailFilePath")
    && #offset == dllfunc("ExecAt", #handle, "MailFileOffset")){
    if(!dllfunc("ExecAt", #handle, "SaveDraft"))goto Error;
    closehidemaru #handle;
    endmacro;
  }
  #i = #i + 1;
}
endmacro;

Error:
  message "DLL 関数失敗";

[ ]
RE:08414 開いている mail で ExecAt+SaveNo.08416
秀まるお さん 03/02/10 10:48
 
 SaveDraftをExecAtで実行することは出来ないです。これは仕様です。

 SaveDraftなど、エディタ上で実行してメール一覧に影響する系統の物(未読/
既読切り替えなども含む)は、鶴亀メール本体とエディタがスレッド間で複雑な
同期を取りながら動作してますので、ExecAtで呼ばれるとおかしくなります。

[ ]
RE:08416 開いている mail で ExecAt+SaveNo.08418
ひろ さん 03/02/10 13:20
 
 秀まるおさん今日は、ひろです。
>  SaveDraftをExecAtで実行することは出来ないです。これは仕様です。
 仕様とのこと理解しました。あと個人的には、
> スレッドの処理に失敗します。そして今度は、その時のメッセージに従ってデ
> バッグ・レベルを 3 にすると、今度は無限ループになるようです。
の状況は不味いので、SaveDraft(2) を実行時点でエラーになった方が安全だ
と思いました。まあ、実際の実装はお任せします。

[ ]