|
こんにちは。
> アカウント名そのものを指定するのではなく、「大きなメールは
> ダウンロードしない」に、サイズ制限が設定されているものだけ、
> という風にするにはどうすれば良いですか?
アカウントの設定内容を確認するには、LoadAccountProp、GetAccountPropという
のを使えばできますね。以下のマクロでは、サイズ制限が設定されていないアカウン
トはスキップするようにしてみました。(ついでに、FindPackもマクロ実行前の状態
に書き戻すようにしておきました)
#MaxSize = 10000;
loaddll "tkinfo.dll";
$CurrentAccount = dllfuncstr("CurrentAccount");
$CurrentFolder = dllfuncstr("CurrentFolder");
$FindPack = dllfuncstr("GetFindPack");
#n = dllfunc("DisableDraw", 1);
openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
$home = getregstr("HomeDir");
closereg;
while (dllfunc("SelectRecvMail")){
$account = dllfuncstr("CurrentAccount");
#n = dllfunc("LoadAccountProp", $account);
if (dllfunc("GetAccountProp", "cbSizeLimit") > 0) {
#findflag = false;
#HeaderView = dllfunc("HeaderView");
$tmp = dllfuncstr("CurrentHeader", "Message-ID");
#n = dllfunc("SetFindPack", "(\"" + $tmp +"\", target=\"Message-ID
\"), flag=!hot&!send, subfolder=0, inmail=0");
disableerrormsg;
if (dllfunc("FindUp")) #findflag = true;
else if (dllfunc("FindDown")) #findflag = true;
enableerrormsg;
#n = dllfunc("SwitchHeaderView", #HeaderView);
if (#findflag) {
#n = dllfunc("Delete", 2); //前のメールを削除する場合
} else {
#j = 0;
while (1){
$name = dllfuncstr("CurrentHeader2", "X-Attach", #j);
if ($name == "") break;
$path = $home + $account + "\\" + $name;
#size = dllfunc("Bypass_GetFileSize", $path);
if (#size >= #MaxSize) {
#n = dllfunc("Bypass_SetFileAttributes", $path, 8224);
#n = dllfunc("Bypass_DeleteFile", $path);
}
#j = #j + 1;
}
}
}
}
#n = dllfunc("SelectFolder", $CurrentAccount, $CurrentFolder);
#n = dllfunc("SetFindPack", $FindPack);
#n = dllfunc("EnableDraw");
|
|