|
このマクロのやってることは、カーソルをメール本文先頭に移動して日付文字
列を検索するだけなので、日付文字列があればその個数分だけ画面がちらついて、
日付文字列が無ければ何もちらつかずに終了するってことなんだと思います。
なので、もともと以前からちらついてるはずだと思います。
以前と比べてちらつくようになったとしたら、たまたま日付文字列がいっぱい
あってちらついてるだけのような気がしますけども…。
ウィンドウの中身がスクロールしてちらついてるだけでしたら、それはそれで
その通りの動作になって仕方がないと思います。なめらかスクロールの設定がON
だともっとちらつくとかあるかもしれませんけども。
マクロをdisabledraw/enabledrawで囲んでやればいいかと思います。
#xStart = x; #yStart = y;
#ytop = screentopy;
disabledraw;
#readonly = readonly;
#browsemode = browsemode;
if( #browsemode ) {
browsemodeswitch;
}
gofiletop;
searchdown2 "(?<=^|[^0-9])[0-9]+/[0-9]+([日月火水木金土])"
, regular;
if( !result ) {
if( #browsemode ) {
browsemodeswitch;
}
moveto #xStart, #yStart;
enabledraw #ytop;
endmacro;
}
if( #readonly ) {
readonlyswitch;
}
Loop:
#x = x; #y = y;
beginsel;
golineend2;
tohankaku;
$text = gettext( #x, #y, x, y );
undo;
moveto #x, #y;
if( #readonly ) {
readonlyswitch;
}
if( #browsemode ) {
browsemodeswitch;
}
loaddll "hmjre.dll";
#n = dllfunc("FindRegular"
, "([0-9]+)/([0-9]+)\\(([日月火水木金土])\\)"
, $text, 0);
if( #n != 0 ) {
endmacro;
}
$month = leftstr($text, dllfunc("GetLastMatchTagLength",1));
$day = midstr($text, dllfunc("GetLastMatchTagPosition",2)
, dllfunc("GetLastMatchTagLength",2));
$week = midstr($text, dllfunc("GetLastMatchTagPosition",3)
, dllfunc("GetLastMatchTagLength",3));
#month = val($month);
#day = val($day);
loaddll "tkinfo.dll";
#yearNow = val( dllfuncstr("CurrentDate","YYYY" ) );
#monthNow = val( dllfuncstr("CurrentDate","M" ) );
if( #month < #monthNow ) {
#yearNow = #yearNow + 1;
}
$mon[1] = "Jan";
$mon[2] = "Feb";
$mon[3] = "Mar";
$mon[4] = "Apr";
$mon[5] = "May";
$mon[6] = "Jun";
$mon[7] = "Jul";
$mon[8] = "Aug";
$mon[9] = "Sep";
$mon[10] = "Oct";
$mon[11] = "Nov";
$mon[12] = "Dec";
$date = str(#day) + " " + $mon[#month] + " " + str(#yearNow)
+ " 00:00:00 +0900";
$week2 = dllfuncstr("FormatDate", $date, "W" );
if( $week2 != $week ) {
message "曜日が違います。正しい曜日 = " + str(#month) + "/" +
str(#day)
+ "(" + $week2 + ")";
#n = dllfunc("SetCancel", 1);
enabledraw;
endmacro;
}
searchdown "(?<=^|[^0-9])[0-9]+/[0-9]+([日月火水木金土])"
, regular;
if( result ) {
goto Loop;
}
moveto #xStart, #yStart;
enabledraw #ytop;
|
|