|
マクロの内容は以下のようになりました。これでどうでしょうか。
このマクロを、「マクロ・マクロ登録・自動起動」の「受信が一段落した時」また
は「送受信の開始直前」の所に登録しておけばいいかと思います。または既に何か登
録されてる場合は、そのマクロからexecmacroを使ってこっちのマクロも起動するよ
うにしたらいいかと思います。
マクロの中の「$account = "....";」の部分はご自身のアカウントに書き換える必
要があります。
7zipがインストールされてなかったり、何かエラーが起きた場合はそこで止まって
しまうので、完全な無人運転をさせるならもっと改良が必要になります。
// 添付ファイル圧縮-7zip-Unsent-All.mac
// 2013.08.14
// 7-zipのダウンロード先: http://sevenzip.sourceforge.jp/
$account = "斉藤秀夫メイン";
loaddll "tkinfo.dll";
$7zip = "C:\\Program files\\7-Zip\\7z.exe";
if( ! existfile( $7zip ) ) {
$7zip = "C:\\Program files (x86)\\7-Zip\\7z.exe";
if( ! existfile( $7zip ) ) {
message "7-Zipのプログラム用ファイルが見つかりません。7-Zipをイ
ンストールしてください。\n\n" +
"7-Zipは、C:\\Program files\\7-Zip またはC:\\Program fil
es (x86)\\7-Zip にインストールされてる必要があります。";
endmacro;
}
}
openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
$home = getregstr( "HomeDir" );
closereg;
if( dllfunc("GetFolderMailCount", $account, "未送信") == 0 ) {
endmacro;
}
$PrevAccount = dllfuncstr("CurrentAccount");
$PrevFolder = dllfuncstr("CurrentFolder");
#n = dllfunc("SelectFolder", $account, "未送信");
if( dllfunc("IsThreadView") != 0 ) {
#n = dllfunc("SetThreadView", 0);
}
if( dllfunc("ViewArea") != 0 ) {
#n = dllfunc("SetViewArea", 0);
}
#MailIndex = 0;
#MailCount = dllfunc("MailCount");
while( #MailIndex < #MailCount ) {
#n = dllfunc("SetMailIndex", #MailIndex);
#attachcount = dllfunc("CountCurrentHeader", "X-Attach");
if( #attachcount != 0 ) {
if( #attachcount == 1
&& dllfuncstr("ToLower", rightstr( dllfuncstr("CurrentHeader",
"X-Attach"), 4 ) ) == ".zip" ) {
//スキップ
} else {
#n = dllfunc("BeginEditMail");
#WantSave = 1;
#i = 0;
//2006.4.14 複数ファイルをまとめて1つにするバージョン
$attach = dllfuncstr("CurrentHeader", "X-Attach");
$path = $home + $account + "\\" + $attach;
if( #attachcount == 1 ) {
$lzh = $attach + ".zip";
$pathLzh = $path + ".zip";
} else {
$lzh = $attach + "など.zip";
$pathLzh = $path + "など.zip";
}
//添付ファイル圧縮-7zip.macで修正。
//$cmd = "-j \"" + $pathLzh + "\"";
$cmd = "a \"" + $pathLzh + "\"";
while(1) {
$attach = dllfuncstr("CurrentHeader2", "X-Attach", #i);
if( $attach == "" ) {
break;
}
$path[#i] = $home + $account + "\\" + $attach;
$cmd = $cmd + " \"" + $path[#i] + "\"";
#i = #i + 1;
#count = #i;
}
//添付ファイル圧縮-7zip.macで修正。
//#n = dllfunc("Zip", hidemaruhandle(0), $cmd);
runsync2 $7zip + " " + $cmd;
if( !result ) {
message "7zipの実行に失敗しました。マクロを中断します。";
endmacro;
}
if( ! existfile( $pathLzh ) ) {
message "Zip圧縮に失敗しました。(圧縮によって生成された
はずのファイルがありません。)";
#WantSave = 0;
} else {
#n = dllfunc("Bypass_SetFileAttributes", $pathLzh, 0x000
00021); //ReadOnly属性に設定。
#i = 0;
while( #i < #count ) {
#n = dllfunc("Bypass_SetFileAttributes", $path[#i],
0x00000020); // ReadOnlyを解除。
#n = dllfunc("Bypass_DeleteFile", $path[#i]);
#i = #i + 1;
}
while( #i > 0 ) {
#i = #i - 1;
#n = dllfunc("DeleteHeader2", "X-Attach", #i);
}
#n = dllfunc("SetHeader", "X-Attach", $lzh);
}
if( #WantSave ) {
#n = dllfunc("SaveEditMail", 0);
} else {
#n = dllfunc("CancelEditMail");
}
}
}
#MailIndex = #MailIndex + 1;
}
#n = dllfunc("SelectFolder", $PrevAccount, $PrevFolder);
endmacro;
|
|