|
以下のマクロてどうでしょ?
一応これで、ユニコードメール中の簡体字中国語はうまく検索出来てると思い
ます。
繁体字中国語についてテストしてみたんですが、文字コード的には「繁体字中
国語には存在するけども簡体字中国語には存在しない(文字コード的にマッチす
る物が無い)ってケースが分からなくて、結果、そういう状況のテストが出来ま
せんでした。なのでそれでうまく動くかどうかはいまいち分からないです。
loaddll "tkinfo.dll";
if( charset == 9 ) {
$charset = "gb2312";
} else if( charset == 10 ) {
$charset = "big5";
} else if( charset == 8 ) {
$charset = "euro";
} else if( charset == 11 ) {
$charset = "korea";
}
#x1 = seltopx;
#y1 = seltopy;
#x2 = selendx;
#y2 = selendy;
if( selecting ) escape;
#browse = browsemode;
if( #browse ) browsemodeswitch;
moveto #x1, #y1;
$s = "";
while( x != #x2 && y <= #y2 ) {
#code = code;
if( #code == 0 && unicode != 0 ) {
goto Retry_gb2312;
}
if( #code == 13 ) {
break;
}
if( #code >= 0x100 ) {
#code2 = #code / 256;
#code = #code & 0xFF;
$s = $s + "\\x" + hex(#code2);
}
if( #code < 0x7F ) {
$s = $s + char(#code);
} else {
$s = $s + "\\x" + hex(#code);
}
right;
}
Retry_return:
if( #browse ) browsemodeswitch;
$pack = "(\"" + $s + "\", target=body)";
if( $charset != "" ) {
$pack = $pack + ", charset=" + $charset;
}
#n = dllfunc( "SetFindPack", $pack );
message $pack;
#n = dllfunc("DoGrep", dllfuncstr("CurrentAccount"), "");
endmacro;
Retry_gb2312:
moveto #x1, #y1;
beginsel;
moveto #x2, #y2;
copy;
#n = dllfunc("NewMail");
gofiletop;
beginsel;
gofileend;
delete;
#n = dllfunc("SetCharSet", "gb2312", 1);
paste;
moveto 0, 0;
while( 1 ) {
#code = code;
if( #code < 0 ) {
break;
}
if( #code == 0 && unicode != 0 ) {
goto Retry_Big5;
}
if( #code == 13 ) {
break;
}
if( #code >= 0x100 ) {
#code2 = #code / 256;
#code = #code & 0xFF;
$s = $s + "\\x" + hex(#code2);
}
if( #code < 0x7F ) {
$s = $s + char(#code);
} else {
$s = $s + "\\x" + hex(#code);
}
right;
if( !result ) {
break;
}
}
#handle = hidemaruhandle(0);
#n = dllfunc("SetMainWndTop");
closehidemaruforced #handle;
$charset = "gb2312";
goto Retry_return;
Retry_Big5:
gofiletop;
beginsel;
gofileend;
delete;
#n = dllfunc("SetCharSet", "gb2312", 1);
paste;
moveto 0, 0;
while( 1 ) {
#code = code;
if( #code < 0 ) {
break;
}
if( #code == 0 && unicode != 0 ) {
#handle = hidemaruhandle(0);
#n = dllfunc("SetMainWndTop");
closehidemaruforced #handle;
message "簡体字中国語でも繁体字中国語でもダメでした。";
endmacro;
}
if( #code == 13 ) {
break;
}
if( #code >= 0x100 ) {
#code2 = #code / 256;
#code = #code & 0xFF;
$s = $s + "\\x" + hex(#code2);
}
if( #code < 0x7F ) {
$s = $s + char(#code);
} else {
$s = $s + "\\x" + hex(#code);
}
right;
if( !result ) {
break;
}
}
#handle = hidemaruhandle(0);
#n = dllfunc("SetMainWndTop");
closehidemaruforced #handle;
$charset = "big5";
goto Retry_return;
|
|