|
> ・赤色よりもマークの方がありがたいです。
> ・マクロを実行した後、各フォルダーのカーソル位置がマークを付けた
> メールの最も古いものに移動してしまうので、元々のカーソル位置に
> 戻してもらえるとありがたいです。
そういう風にマクロを直してみましたが、見栄えはちょっと悪いです。
検索コマンドだとどうしても選択してるメールが狂ってしまうので、それを使わず
に、「検索して一覧作成」を使うようにしました。これでメールの選択状態は壊れな
いんですが、代わりに、マクロ実行中に検索結果が出たり消えたりの点滅をします。
それが欠点ですけども、一応動作速度は高速にはなっています。
一回試してみて欲しいです。
----------------------マクロ内容---------------------------------
loaddll "tkinfo.dll";
#n = dllfunc("SetJapaneseCodePageMode", 1);
$folder = dllfuncstr("CurrentFolder");
#n = dllfunc("DisableDraw", 1);
$find = dllfuncstr("GetFindPack");
#n = dllfunc("SelectFolder", "", "User\\[Gmail]\\スター付き");
if( #n == 0 ) {
#n = dllfunc("EnableDraw");
#n = dllfuncstr("SetFindPack", $find);
message "スター付きフォルダが選択できませんでした。";
endmacro;
}
if( dllfunc("IsThreadView") != 0 ) {
#n = dllfunc("SetThreadView", 0);
}
if( dllfunc("ViewArea") != 0 ) {
#n = dllfunc("SetViewArea", 0);
}
#count = dllfunc("MailCount");
if( #count == 0 ) {
#n = dllfunc("SelectFolder", "", $folder);
endmacro;
}
#i = 0;
#idcount = 0;
while( #i < #count ) {
#n = dllfunc("SetMailIndex", #i);
$id = dllfuncstr("CurrentHeader", "Message-Id");
if( $id != "" ) {
if( leftstr($id, 1) == "<" && rightstr($id, 1) == ">" ) {
$id = midstr( $id, 1, strlen($id) - 2 );
}
}
if( $id != "" ) {
$id[#idcount] = $id;
#idcount = #idcount + 1;
}
#i = #i + 1;
}
//マークされたメールの一覧を「検索して一覧作成」する。
#n = dllfunc("SetFindPack", "flag=mark, subfolder=1");
#n = dllfunc("DoGrep", "\\CurrentAccount", "受信+送信済み+ユーザー,exclu
de=" + dllfuncstr("CurrentAccount") + "\\User\\[Gmail]\\スター付き");
#n = dllfunc("SetGrepWndTop");
#markcount = dllfunc("MailCount");
//一回全部のマークを取る。
#n = dllfunc("SimulateKeyStroke", 0x23, 0, 0, 0); //Homeキー
#n = dllfunc("SimulateKeyStroke", 0x24, 1, 0, 0); //Shift+Endキー
#n = dllfunc("SetMailFlag", "mark", 0);
#i = 0;
while( #i < #idcount ) {
#n = dllfunc("SetFindPack", "(\"" + dllfuncstr("YenEncode", $id[#i])
+ "\",target=person),messageidtarget=messageid");
#n = dllfunc("SetMailIndex", 0);
#n = dllfunc("FindDownInclude");
if( #n != 0 ) {
$id[#i] = "";
#n = dllfunc("SetMailFlag", "mark", 1);
}
#i = #i + 1;
}
#n = dllfunc("SetMainWndTop");
#n = dllfunc("CloseGrepWnd", 1);
#i = 0;
#first = 1;
while( #i < #idcount ) {
$id = $id[#i];
if( $id != "" ) {
//マークしないといけないメールが見つかった。
#n = dllfunc("SetFindPack", "(\"" + dllfuncstr("YenEncode", $id)
+ "\",target=person),messageidtarget=messageid, subfolder=1");
if( #first ) {
#first = 0;
#n = dllfunc("DoGrep", "\\CurrentAccount", "受信+送信済み+
ユーザー,exclude=" + dllfuncstr("CurrentAccount") + "\\User\\[Gmail]\\スター
付き");
} else {
#n = dllfunc("DoGrepAppend", "\\CurrentAccount", "受信+送信
済み+ユーザー,exclude=" + dllfuncstr("CurrentAccount") + "\\User\\[Gmail]\\
スター付き");
}
}
#i = #i + 1;
}
if( dllfunc("GrepWnd") != 0 ) {
#n = dllfunc("SetGrepWndTop");
#n = dllfunc("SimulateKeyStroke", 0x23, 0, 0, 0); //Homeキー
#n = dllfunc("SimulateKeyStroke", 0x24, 1, 0, 0); //Shift+Endキー
#n = dllfunc("SetMailFlag", "mark", 1);
#n = dllfunc("SetMainWndTop");
#n = dllfunc("CloseGrepWnd");
}
#n = dllfunc("SelectFolder", "", $folder);
#n = dllfunc("SetFindPack", $find);
#n = dllfunc("EnableDraw");
|
|