新着未読の内の一番古いメールに移動No.10427
ダヴィンチ来善 さん 22/10/17 08:53
 
掲題の通り新着未読の内最も古いメールのところにカーソルを移動させるにはどうす
れば良いでしょうか。

以下は新着未読の最も新しいメールに移動するマクロです。


loaddll "TKInfo.dll";
// 新着メールに移動
#n = dllfunc("SetFindPack", "flag=hot&unread&!spam");

// ゴミ箱検索除外
#SW = 1;
#n = dllfunc("NextPrevCustom", "findflag", "down", "", "RollAll", #SW);

[ ]
RE:10427 新着未読の内の一番古いメールにNo.10432
秀まるお2 さん 22/10/17 12:26
 
 すべてのフォルダを対象にしてってことになると、NextPrevCustomで探すのは無理
だと思います。現状考えた作戦としては、「新着リスト - すべてのアカウント」を
実行した結果を送受信日時順にソートして一番先頭のメールを秀丸メール本体側で選
択し、その後新着リストを閉じる、みたいな作戦になりました。

 ただ、検索結果の一覧上でのマウス右ボタンメニューに出てくる「このメールを秀
丸メール本体側で選択する」は、tkinfo.dllに関数が用意されてなくて、sendmessag
eで実行するにもコマンドコードが分からないです。コマンドコードはとりあえず僕
のソースコードから「40094」でありまして、それで実行してもらう形にしました。

    loaddll "TKInfo.dll";
    // 「新着リスト - 現在アカウント」コマンド実行
    #n = dllfunc("AutoRestoreFindPack");
    #n = dllfunc("SetFindPack", "flag=!send&transmit=メーラー起動時-指定なし,
 subfolder=1");
    #n = dllfunc("DoGrep", "", "受信+送信済み+ユーザー");
    #n = dllfunc("SetGrepWndTop");
    #n = dllfunc("SetSortMethod", 4);       //送受信日時順
    #n = dllfunc("SetMailIndex", 0);        //先頭のメールを選択。  
    #n = sendmessage( hidemaruhandle(0), 0x111, 40094, 0 );     //「このメー
ルを秀丸メール本体側で選択」コマンド。
    #n = dllfunc("SetMainWndTop");
    #n = dllfunc("CloseGrepWnd");
 

 検索結果のウィンドウが1回出てきてしまうのですが、他に方法が思いつかないて
す。

 もしも受信フォルダの中でってことなら、絞り込み検索で新着リストにしてからそ
の先頭のメールを選択し、その後絞り込み検索を解除するって作戦も可能です。必要
ならそのマクロも作成します。

 あと、上記マクロは「現在アカウント」を対象としてますが、「すべてのアカウン
ト」を対象にしたいなら、DoGrep関数の第1パラメータを""にすればいいです。あと
あと、検索結果上での「本体側で選択」のコマンド実行は次のβ版から"Sync"関数に
て実行可能にします。

[ ]
RE:10432 新着未読の内の一番古いメールにNo.10441
ダヴィンチ来善 さん 22/10/17 18:45
 
秀まるお2様へ

丁寧にご回答頂きありがとうございます。
伺って良かったです。
さすがに考えてもこのマクロコードは思いつきませんでした。
バルーンチップ表示マクロへの反映はSync関数が落ち着いた頃に対応させて
頂こうと存じます。
頂いたマクロで様子を見させて頂きます。
重ねて感謝申し上げます。
ありがとうございました。

/*
** タイトル:『hidesoft.8:10432| RE 10427 新着未読の内の一番古いメールに移動』
** 発信日:2022年10月17日(月) 12時26分52秒
** 発信者:秀まるお2様
*/
> すべてのフォルダを対象にしてってことになると、NextPrevCustomで探すのは無理
>だと思います。現状考えた作戦としては、「新着リスト - すべてのアカウント」を実
>行した結果を送受信日時順にソートして一番先頭のメールを秀丸メール本体側で選択
>し、その後新着リストを閉じる、みたいな作戦になりました。
>
> ただ、検索結果の一覧上でのマウス右ボタンメニューに出てくる「このメールを秀
>丸メール本体側で選択する」は、tkinfo.dllに関数が用意されてなくて、sendmessage
>で実行するにもコマンドコードが分からないです。コマンドコードはとりあえず僕の
>ソースコードから「40094」でありまして、それで実行してもらう形にしました。
>
>    loaddll "TKInfo.dll";
>    // 「新着リスト - 現在アカウント」コマンド実行
>    #n = dllfunc("AutoRestoreFindPack");
>    #n = dllfunc("SetFindPack", "flag=!send&transmit=メーラー起動時-指定なし,
>subfolder=1");
>    #n = dllfunc("DoGrep", "", "受信+送信済み+ユーザー");
>    #n = dllfunc("SetGrepWndTop");
>    #n = dllfunc("SetSortMethod", 4);       //送受信日時順
>    #n = dllfunc("SetMailIndex", 0);        //先頭のメールを選択。  
>    #n = sendmessage( hidemaruhandle(0), 0x111, 40094, 0 );     //「このメー
>ルを秀丸メール本体側で選択」コマンド。
>    #n = dllfunc("SetMainWndTop");
>    #n = dllfunc("CloseGrepWnd");
>
>
> 検索結果のウィンドウが1回出てきてしまうのですが、他に方法が思いつかないて
>す。
>
> もしも受信フォルダの中でってことなら、絞り込み検索で新着リストにしてからそ
>の先頭のメールを選択し、その後絞り込み検索を解除するって作戦も可能です。必要
>ならそのマクロも作成します。
>
> あと、上記マクロは「現在アカウント」を対象としてますが、「すべてのアカウン
>ト」を対象にしたいなら、DoGrep関数の第1パラメータを""にすればいいです。あと
>あと、検索結果上での「本体側で選択」のコマンド実行は次のβ版から"Sync"関数に
>て実行可能にします。

[ ]