|
メール一覧の選択状態は変更せずにスクロールだけコントロールすることは可能で
す。
tkinfo.dllのTitleListWnd関数を使ってメール一覧のウィンドウハンドルが取得で
きるので、そこにsendmessageを使ってWM_VSCROLL,SB_BOTTOMを送る作戦になります。
loaddll "tkinfo.dll";
#wnd = dllfunc("TitleListWnd");
//WM_VSCROLL = 0x0115
//SB_BOTTOM = 7
#n = sendmessage( #wnd, 0x0115, 7, 0);
こんなマクロになります。
受信フォルダを選択することも必要になるなら、
loaddll "tkinfo.dll";
#n = dllfunc("SelectFolder", "", "受信");
#wnd = dllfunc("TitleListWnd");
//WM_VSCROLL = 0x0115
//SB_BOTTOM = 7
#n = sendmessage( #wnd, 0x0115, 7, 0);
とすればいいはずなんですが、実はこのマクロうまく動かずです。なぜかというと、
受信フォルダを選択した後に、秀丸メールの方で特殊なタイマーがセットされて、そ
のタイマーによって、遅延して(マクロが終了してから)メール一覧のスクロールが
実行されるからです。
これを回避するには、いろいろ試行錯誤した所以下のようなマクロにしないとダメ
そうでした。
loaddll "tkinfo.dll";
#n = dllfunc("SelectFolder", "", "受信");
#n = dllfunc("SetAutoPushTimerEver", hidemaruhandle(0), "");
message "";
#n = dllfunc("StopAutoPushTimer");
#wnd = dllfunc("TitleListWnd");
//WM_VSCROLL = 0x0115
//SB_BOTTOM = 7
#n = dllfunc("Bypass_PostMessage", #wnd, 0x0115, 7, 0);
一瞬メッセージボックスが出て消えるような動作をします。
こんなマクロを使う作戦でどうでしょうか。
「マクロ・マクロ登録...」の「自動起動」ページの「受信が一段落した時」に登
録しておく形になります。
|
|