|
お世話になります。ichiy です。
> たぶん、「マクロ・マクロ登録・自動起動」の「受信が一段落した時」の所に
>何かマクロが登録してあって、そのマクロが実行されると検索条件が変わってし
>まうという問題じゃないかと思います。
>
確かにマクロ登録しています。内容は、
@メール受信時にポップアップ表示
A先頭の未読メールを選択
となっています。
以下マクロで問題なさそうな場合は、子マクロも書きますので。
宜しくお願いします。
=====
//***** Main Routin Start ****************************************
loaddll "tkinfo.dll";
if( !result ){
message "このマクロは秀丸エディタ側では実行できません。";
endmacro;
}
// 受信メール数取得
#recvmail = dllfunc( "RecvMailCountShow");
if( #recvmail == 0 ){
// 受信メール無し時は終了
endmacro;
}
//----------------------------------------------------------
// 受信通知
//----------------------------------------------------------
#balloon = 1; // バルーン表示 0:しない 1:する
#popup = 1; // ポップアップ 0:しない 1:する
// ポップアップしない。
if( #popup == 0 ){
if( #balloon ){
execmacro currentmacrodirectory + "\\未読メール数カウント.mac";
}
endmacro;
}
$msg = "新着メールを受信しました。\n今すぐメールを読みますか?\n(Shift押下で
一覧作成)";
#ret = dllfunc("Bypass_MessageBox", 0, $msg, "秀丸メール - 受信通知",0x1024);
#Shift = iskeydown(0x10);
#Ctrl = iskeydown(0x11);
if( #Ctrl == 1) #balloon = 1;
// ポップアップ中に受信したかもしれないので、メール数を再取得
#rcnt = dllfunc( "RecvMailCountShow");
if( #rcnt ) #recvmail = #rcnt;
// 「いいえ」の場合
if( #ret == 7 ){
// 未読メール数カウント
call UnreadCount;
#unread = ##return;
// バルーン表示
if( #balloon && #unread ){
execmacro currentmacrodirectory + "\\未読メール数カウント.mac";
}
endmacro;
}
// ポップアップ中に受信したメールを拾う(完了するまで待つ)
// これをやらないと、このマクロが再度実行されてしまう。-_-:
#n = dllfunc("ReceiveAll");
#cnt=0;
//送受信できた場合はメール数取得
if( #n == 1 ) #cnt = dllfunc( "RecvMailCountShow");
while( #cnt>0 ){
// 受信メール数を加算
#recvmail = #recvmail + #cnt;
#cnt=0;
#n = dllfunc("ReceiveAll");
if( #n == 1 ) #cnt = dllfunc( "RecvMailCountShow");
}
// 未読メール数カウント
call UnreadCount;
#unread = ##return;
if( #unread == 0 ) endmacro;
// 未読メールが10通を超えている場合は、強制的に一覧表示
if( #unread >= 10 ) #Shift = 1;
//----------------------------------------------------------
// 最初の未読メールに移動
//----------------------------------------------------------
// 元のサイズに戻す
#tmp = dllfunc("RestoreWindow");
// アクティブウィンドウに
setactivehidemaru hidemaruhandle(0);
// カレントアカウント取得
$account = dllfuncstr("CurrentAccount");
// カレントフォルダ取得
$folder = dllfuncstr("CurrentFolder");
// トップフォルダ選択
#n = dllfunc("SelectFolder",dllfuncstr("Account",0),"");
//未読メール選択
#tmp = dllfunc( "NextPrevCustom", "unread", "next", "", "over");
// 選択されたら終わり
if( #tmp == 1 ){
// メール一覧枠を選択
#n = dllfunc( "SelectPane", 1);
// 未読一覧作成(Shiftキーを押している場合)
if( #Shift == 1 ){
execmacro currentmacrodirectory + "\\unread.mac";
}
endmacro;
}
// 選択されなかったらカレントフォルダ選択
#tmp = dllfunc("SelectFolder", $account, $folder);
//**********************************************************
//* 未読メール数カウント サブルーチン *
//**********************************************************
//**************************************** SUB ROUTINE START
UnreadCount:
##total_cnt=0;
$$folder = "受信";
##cnt = dllfunc( "GetFolderMailCount", "",$$folder,"unread");
##total_cnt = ##total_cnt + ##cnt;
while( 1 ){
$$s = dllfuncstr("GetNextFolder", "", $$folder);
##x = strstr( $$s, "\\");
if( ##x >= 0 ) {
$$account = leftstr( $$s, ##x);
$$folder = midstr( $$s, ##x + 1, 256 );
} else {
$$account = $$s;
$$folder = "";
}
if( $$folder == "" ) break;
if( $$folder != "送信済み" && $$folder != "ゴミ箱" ){
##cnt = dllfunc( "GetFolderMailCount", "",$$folder,"unread");
##total_cnt = ##total_cnt + ##cnt;
}
}
return ##total_cnt;
//**************************************** SUB ROUTINE END
endmacro;
//***** Main Routin End ******************************************
|
|