|
マクロがうまく動かない原因ですが、秀丸メールのエディタ・ウィンドウが別
スレッド(ここでいうスレッドとはCPU実行単位としてのスレッド)になってる
せいでして、根本的な解決としては、マルチスレッドでマクロ実行させないよう
にするしか無いという結論になりました。
(話がややこしくてすみません)
要するに、エディタを起動するのは全部ダメで、送信の処理をすべて秀丸
メール本体ウィンドウ上でやらないとダメです。それをやるために、以下のよう
にマクロを直してみました。
loaddll "tkinfo.dll";
#n = dllfunc("GetTransmitCommandCode");
if( #n == 40216 || #n == 40059 || #n == 40024 ) {
#mailcount = dllfunc("GetFolderMailCount", "", "未送信");
if( #mailcount > 1 ) {
$folder = dllfuncstr("CurrentFolder");
#n = dllfunc("SelectFolder", "", "草稿");
#n = dllfunc("MakeFolder", "$$$temp$$$");
#n = dllfunc("SelectFolder", "", "未送信");
#n = dllfunc("SelectAllMail");
#n = dllfunc("Move", "", "草稿\\$$$temp$$$");
#n = dllfunc("SelectFolder", "", "草稿\\$$$temp$$$");
while( dllfunc("MailCount") > 0 ) {
#n = dllfunc("SetMailIndex", 0);
if( #n == 0 ) {
message "メール選択失敗";
endmacro;
}
#n = dllfunc("Move", "", "未送信");
#n = dllfunc("SendRemain");
if( #n == 0 ) {
message "メール送信失敗";
endmacro;
}
sleep 2000;
}
#n = dllfunc("SelectFolder", "", "草稿\\$$$temp$$$");
if( dllfuncstr("CurrentFolder") == "草稿\\$$$temp$$$" ) {
#n = dllfunc("DeleteFolder", 1, 0, 0);
}
#n = dllfunc("SelectFolder", "", $folder);
}
}
作戦として、草稿フォルダの配下に「$$$temp$$$」っていう一時フォルダを作
成して、一度そこに未送信メールをすべて待避させて、それから1通ずつ未送信
フォルダに移動して「未送信メールの送信」を繰り返すという、そういう処理に
しました。
これでうまくいくはずだと思います。
すみませんがこれでテストお願いします。
|
|