アカウントごとに、今「受信したアカウンNo.37412
hej さん 09/11/30 00:24
 
hejです。質問が長くなってしまったので、別投稿にしました。
よろしくお願いします。

秀丸メール起動(常駐)後に、アカウント
ごとに新たな受信メールがあったかどうかを知ることが
できればよいと思います。受信したら、フォルダ枠の、
「アカウント名」の色が変わるなど、感覚的に解るように
できないものでしょうか。折りたたみを開くまでは、
その印が消えないままだとなお良いです。

作っているアカウントのうち、3つほどは、常に既読の
メールがある状態にしておく必要があります。そのため、
既読を太字で示す機能を使って、「このアカウントに受信した」事を知ることができ
ないのです。

[ ]
RE:37412 アカウントごとに、今「受信したNo.37414
秀まるお2 さん 09/11/30 09:30
 
 フォルダには「新着」のアイコンがあるんですけど、アカウントには無いです。

 アカウントにも新着アイコンがあったらいいかもしれませんけども。

 とりあえず現状なんとかするとしたら、GetLastRecvMailAccountという関数を
使ってなんとか出来るとは思いますけど、それではダメですかね。

    loaddll "tkinfo.dll";
    #c = dllfunc("RecvMailCountShow") + dllfunc("RemoteMailHotCount");
    #i = 0;
    $list = "";
    while( #i < #c ) {
        $s = dllfuncstr("GetLastRecvMailAccount", #i) + ",";
        if( strstr( $list, $s) < 0 ) {
            $list = %list + $s;
        }
        #i = #i + 1;
    }
    if( $list != "" ) {
        message $list;
    }

 みたいなマクロを作って、それを「マクロ・マクロ登録・自動起動・本体ウィ
ンドウを開いた時」に登録しておくとか。

[ ]
RE:37414 アカウントごとに、今「受信したNo.37416
hej さん 09/11/30 14:09
 

> フォルダには「新着」のアイコンがあるんです
>けど、アカウントには無いです。

できればアカウントにも、「新着」のアイコ
ンか、アカウント名(ハードディスクに作る
フォルダ名)に「色」が付くとかが、選択で
きるとありがたいです。


作っていただいた、マクロを登録してみたの
ですが、「式がおかしいです」のメッセージ
が出てしまいます。登録方法が間違っている
のでしょうか。
よろしくお願いします。

>    loaddll "tkinfo.dll";
>    #c = dllfunc("RecvMailCountShow") +
>dllfunc("RemoteMailHotCount");
>    #i = 0;
>    $list = "";
>    while( #i < #c ) {
>        $s = dllfuncstr(
>"GetLastRecvMailAccount", #i) + ",";
>        if( strstr( $list, $s) < 0 ) {
>            $list = %list + $s;
>        }
>        #i = #i + 1;
>    }
>    if( $list != "" ) {
>        message $list;
>    }
>
> みたいなマクロを作って、それを「マクロ・マ
>クロ登録・自動起動・本体ウィ
>ンドウを開いた時」に登録しておくとか。

[ ]
RE:37416 アカウントごとに、今「受信したNo.37417
秀まるお2 さん 09/11/30 16:02
 
 マクロはテストしてませんでした。テストして直してみました。

    loaddll "tkinfo.dll";
    #c = dllfunc("RecvMailCountShow") + dllfunc("RemoteMailHotCount");
    #i = 0;
    $list = "";
    while( #i < #c ) {
        $s = dllfuncstr("GetLastRecvMailAccount", #i) + ",";
        if( strstr( $list, $s) < 0 ) {
            $list = $list + $s;
        }
        #i = #i + 1;
    }
    if( $list != "" ) {
        message $list;
    }


 ですが、

    loaddll "tkinfo.dll";
    #c = dllfunc("RecvMailCountShow") + dllfunc("RemoteMailHotCount");
    #i = 0;
    $list = "";
    while( #i < #c ) {
        $s = dllfuncstr("GetLastRecvMailAccount", #i) + ",";
        if( strstr( $list, $s) < 0 ) {
            $list = $list + $s;
        }
        #i = #i + 1;
    }
    if( $list != "" ) {
        title $list;
        title -1;
    } else {
        title 0;
    }

 のようにすると、タイトルバーに受信したアカウント一覧を表示したり、とい
うことも出来ます。

> できればアカウントにも、「新着」のアイコ
> ンか、アカウント名(ハードディスクに作る
> フォルダ名)に「色」が付くとかが、選択で
> きるとありがたいです。

 それはそれで1つのアイデアとして考えたいと思いますが、とりあえず似たよ
うなことを、アカウントのアイコン変更ということで実現したいと思いました。
しかし、現状のtkinfo.dll関数ではそういうこと(アカウントのアイコン変更)
が出来ません。

 それでとりあえずアカウントのアイコン変更を出来るように次のβ版からさせ
ていただきます。それをアップロードしたら参考マクロをまた書き込みします。

[ ]
RE:37417 アカウントごとに、今「受信したNo.37419
hej さん 09/11/30 17:12
 
> ですが、
>
>    loaddll "tkinfo.dll";
>    #c = dllfunc("RecvMailCountShow") +
>dllfunc("RemoteMailHotCount");
>    #i = 0;
>    $list = "";
>    while( #i < #c ) {
>        $s = dllfuncstr(
>"GetLastRecvMailAccount", #i) + ",";
>        if( strstr( $list, $s) < 0 ) {
>            $list = $list + $s;
>        }
>        #i = #i + 1;
>    }
>    if( $list != "" ) {
>        title $list;
>        title -1;
>    } else {
>        title 0;
>    }
>
> のようにすると、タイトルバーに受信したアカ
>ウント一覧を表示したり、とい
>うことも出来ます。


こっちがいいです。タイトルバーに出るのが
とても良いです。


> それでとりあえずアカウントのアイコン変更を
>出来るように次のβ版からさせ
>ていただきます。それをアップロードしたら参考
>マクロをまた書き込みします。


ありがたいです。よろしくお願いします。

[ ]
RE:37419 アカウントごとに、今「受信したNo.37448
秀まるお2 さん 09/12/02 16:51
 
 こっちの方を忘れてました。

 マクロとしてはこんな風になります。

    loaddll "tkinfo.dll";
    #c = dllfunc("RecvMailCountShow") + dllfunc("RemoteMailHotCount");
    #i = 0;
    $list = "";
    while( #i < #c ) {
        $s = "/" + dllfuncstr("GetLastRecvMailAccount", #i) + "/";
        if( strstr( $list, $s) < 0 ) {
            $list = $list + $s;
        }
        #i = #i + 1;
    }
    #i = 0;
    while(1) {
        $acc = dllfuncstr("Account", #i);
        if( $acc == "" ) {
            break;
        }
        $find = "/" + $acc + "/";
        if( strstr( $list, $find ) < 0 ) {
            #icon = 0;
        } else {
            #icon = 1;
        }
        #n = dllfunc("LoadAccountProp", $acc);
        #iconPrev = dllfunc("GetAccountProp", "nAccountIcon");
        if( #iconPrev != #icon ) {
            #n = dllfunc("SetAccountProp", "nAccountIcon", #icon );
            #n = dllfunc("SaveAccountProp");
        }
        #i = #i + 1;
    }

 これを「マクロ登録・自動起動・受信が一段落した時」に登録しておけばいい
んじゃないかと思いますけど、どうでしょ。

[ ]
RE:37448 アカウントごとに、今「受信したNo.37453
hej さん 09/12/02 19:50
 
> マクロとしてはこんな風になります。

使ってみました。
ブルーにアイコンが変わるのがいいです。

元々アイコン色に、3色(標準色とグリーン2
つ)を設定しています。

で、新着メールがあったアカウントが「ブ
ルー」に変わった時、新着がなかったアカウ
ントのアイコン色が、すべて「標準色」に変
わります。
ここが、元のアイコン色のままだと、なお良
いと思います。もし可能なようでしたら、お
願いできますでしょうか。



>    loaddll "tkinfo.dll";
>    #c = dllfunc("RecvMailCountShow") +
>dllfunc("RemoteMailHotCount");
>    #i = 0;
>    $list = "";
>    while( #i < #c ) {
>        $s = "/" + dllfuncstr(
>"GetLastRecvMailAccount", #i) + "/";
>        if( strstr( $list, $s) < 0 ) {
>            $list = $list + $s;
>        }
>        #i = #i + 1;
>    }
>    #i = 0;
>    while(1) {
>        $acc = dllfuncstr("Account", #i);
>        if( $acc == "" ) {
>            break;
>        }
>        $find = "/" + $acc + "/";
>        if( strstr( $list, $find ) < 0 ) {
>            #icon = 0;
>        } else {
>            #icon = 1;
>        }
>        #n = dllfunc("LoadAccountProp",
>$acc);
>        #iconPrev = dllfunc("GetAccountProp",
>"nAccountIcon");
>        if( #iconPrev != #icon ) {
>            #n = dllfunc("SetAccountProp",
>"nAccountIcon", #icon );
>            #n = dllfunc("SaveAccountProp");
>        }
>        #i = #i + 1;
>    }
>
> これを「マクロ登録・自動起動・受信が一段落
>した時」に登録しておけばいい
>んじゃないかと思いますけど、どうでしょ。

[ ]
RE:37453 アカウントごとに、今「受信したNo.37455
秀まるお2 さん 09/12/03 09:20
 
        if( #iconPrev != #icon ) {

 の所を、例えば

        if( #iconPrev != #icon && #iconPrev < 2 ) {

 にすればいいかと思います。

 グリーンのアイコン番号("nAccountIcon"の値)は2になるはずなので。

[ ]
RE:37455 アカウントごとに、今「受信したNo.37467
hej さん 09/12/04 18:02
 
hejです。

たびたびお世話になります。

どうも、最初は新着メールの時、水色に変わ
っていたのですが、変わらなくなったり、い
つの間にか、水色に変わるようになったりし
ます。
アカウントのうち、一番上の方に作ってある
ものだけ、水色になることもあるようです。
いろいろ試してみたのですが、どういう場合
に起こるのか、はっきりしません。
今は、新着メールが来ても、アイコン色は変
わらない状態です。


・作成してあるアカウントの数15ぐらい(ア
カウントグループも含む)
・アカウントのアイコンの色はすべて標準色
・アカウントのアイコン色をどこか一か所以
上、別の色に変える(たとえば緑)と、その後
新着メール受信したとき、「水色」に変わら
なくなりました。その後も、当分、新着アイ
コン色に変わらないままになってWindowsXP
再起動などしても、変化なしです。で、いつ
のまにか、上手く行くように直ったりします。
・5.30β11
・使わせてもらったマクロは、一番最初のも
のです。
よろしくお願いします。


    loaddll "tkinfo.dll";
    #c = dllfunc("RecvMailCountShow") +
dllfunc("RemoteMailHotCount");
    #i = 0;
    $list = "";
    while( #i < #c ) {
        $s = "/" + dllfuncstr(
"GetLastRecvMailAccount", #i) + "/";
        if( strstr( $list, $s) < 0 ) {
            $list = $list + $s;
        }
        #i = #i + 1;
    }
    #i = 0;
    while(1) {
        $acc = dllfuncstr("Account", #
i);
        if( $acc == "" ) {
            break;
        }
        $find = "/" + $acc + "/";
        if( strstr( $list, $find ) < 0 )
{
            #icon = 0;
        } else {
            #icon = 1;
        }
        #n = dllfunc("LoadAccountProp",
$acc);
        #iconPrev = dllfunc(
"GetAccountProp", "nAccountIcon");
        if( #iconPrev != #icon ) {
            #n = dllfunc("SetAccountProp",
 "nAccountIcon", #icon );
            #n = dllfunc(
"SaveAccountProp");
        }
        #i = #i + 1;
    }

[ ]
RE:37467 アカウントごとに、今「受信したNo.37469
秀まるお2 さん 09/12/07 09:05
 
 定期受信の場合だと、何かメールを受信してアカウントアイコンを変化させて
も、その後またしばらく経過して定期受信が動くことによって、せっかく新着に
したアイコンが元に戻されてしまうということがあるんだと思います。

 ということで作戦として、マクロを2つに分けないとダメかと思います。

 1つは、受信の直後に動かすマクロで、新着メールがあったら新着アイコンに
するマクロ。(新着が無いアカウントを元に戻したりはしない)

 もう1つは、秀丸メールを起動/終了するタイミングか何かで、新着アイコン
をすべて元に戻すマクロです。

 という作戦でどうでしょ?

 「受信が一段落した時」用のマクロは以下のようにします。

    loaddll "tkinfo.dll";
    #c = dllfunc("RecvMailCountShow") + dllfunc("RemoteMailHotCount");
    #i = 0;
    $list = "";
    while( #i < #c ) {
        $s = "/" + dllfuncstr("GetLastRecvMailAccount", #i) + "/";
        if( strstr( $list, $s) < 0 ) {
            $list = $list + $s;
        }
        #i = #i + 1;
    }
    #i = 0;
    while(1) {
        $acc = dllfuncstr("Account", #i);
        if( $acc == "" ) {
            break;
        }
        $find = "/" + $acc + "/";
        if( strstr( $list, $find ) >= 0 ) {
            #n = dllfunc("LoadAccountProp", $acc);
            if( dllfunc("GetAccountProp", "nAccountIcon") == 0 ) {
                #n = dllfunc("SetAccountProp", "nAccountIcon", 1 );
                #n = dllfunc("SaveAccountProp");
            }
        }
        #i = #i + 1;
    }

 そして、「本体ウィンドウを閉じる時」や「秀丸メール終了時」に、以下のマ
クロを登録しておきます。

    loaddll "tkinfo.dll";
    while(1) {
        $acc = dllfuncstr("Account", #i);
        if( $acc == "" ) {
            break;
        }
        #n = dllfunc("LoadAccountProp", $acc);
        if( dllfunc("GetAccountProp", "nAccountIcon") == 1 ) {
            #n = dllfunc("SetAccountProp", "nAccountIcon", 0 );
            #n = dllfunc("SaveAccountProp");
        }
        #i = #i + 1;
    }

 ということでどうでしょ?

[ ]
RE:37469 アカウントごとに、今「受信したNo.37491
hej さん 09/12/09 18:20
 
アイコン色が見事に変わるようになりました。
ありがとうございます。



> 「受信が一段落した時」用のマクロは以下のようにします。
>
>    loaddll "tkinfo.dll";
>    #c = dllfunc("RecvMailCountShow") + dllfunc
>("RemoteMailHotCount");
>    #i = 0;
>    $list = "";
>    while( #i < #c ) {
>        $s = "/" + dllfuncstr("GetLastRecvMailAccount", #
>i) + "/";
>        if( strstr( $list, $s) < 0 ) {
>            $list = $list + $s;
>        }
>        #i = #i + 1;
>    }
>    #i = 0;
>    while(1) {
>        $acc = dllfuncstr("Account", #i);
>        if( $acc == "" ) {
>            break;
>        }
>        $find = "/" + $acc + "/";
>        if( strstr( $list, $find ) >= 0 ) {
>            #n = dllfunc("LoadAccountProp", $acc);
>            if( dllfunc("GetAccountProp", "nAccountIcon")
>== 0 ) {
>                #n = dllfunc("SetAccountProp",
>"nAccountIcon", 1 );
>                #n = dllfunc("SaveAccountProp");
>            }
>        }
>        #i = #i + 1;
>    }
>
> そして、「本体ウィンドウを閉じる時」や「秀丸メール終了
>時」に、以下のマ
>クロを登録しておきます。
>
>    loaddll "tkinfo.dll";
>    while(1) {
>        $acc = dllfuncstr("Account", #i);
>        if( $acc == "" ) {
>            break;
>        }
>        #n = dllfunc("LoadAccountProp", $acc);
>        if( dllfunc("GetAccountProp", "nAccountIcon") == 1
> ) {
>            #n = dllfunc("SetAccountProp", "nAccountIcon",
>0 );
>            #n = dllfunc("SaveAccountProp");
>        }
>        #i = #i + 1;
>    }
>
> ということでどうでしょ?

[ ]