|
名前が無い物だけ変換するというサンプルとしては、以下のようになります。
秀丸メール本体ウィンドウ上で変換したい対象のメールを選択して実行するか、
またはエディタで開いてマクロ実行してみてください。
複数選択して実行すると、選択した複数のメールすべてについて変換します。
loaddll "tkinfo.dll";
if( dllfunc("IsTuruKameMain") ) {
#n = dllfunc("LockSelection");
while(1) {
#n = dllfunc("EnumSelection", 1);
if( #n == 0 ) {
break;
}
#n = dllfunc("BeginEditMail");
call ConvHeaderByBook;
if( ##return ) {
#n = dllfunc("SaveEditMail", 0, 0);
} else {
#n = dllfunc("CancelEditMail");
}
}
} else {
#readonly = readonly;
if( #readonly ) {
#n = dllfunc("EnableEdit");
}
call ConvHeaderByBook;
if( #readonly ) {
if( ##return ) {
#n = dllfunc("AlterSave");
}
}
}
endmacro;
ConvHeaderByBook:
##to_count = dllfunc("CountCurrentHeader", "To");
##cc_count = dllfunc("CountCurrentHeader", "Cc");
##i = 0;
##conved = 0;
while( ##i < ##to_count ) {
$$s = dllfuncstr("CurrentHeader2", "To", ##i);
call BookChange $$s;
if( $$return != $$s ) {
##n = dllfunc("SetHeader2", "To", $$return, ##i );
##conved = 1;
}
##i = ##i + 1;
}
##i = 0;
while( ##i < ##cc_count ) {
$$s = dllfuncstr("CurrentHeader2", "Cc", ##i);
call BookChange $$s;
if( $$return != $$s ) {
##n = dllfunc("SetHeader2", "Cc", $$return, ##i );
##conved = 1;
}
##i = ##i + 1;
}
return ##conved;
BookChange:
##c = dllfunc("CountEmailList", $$1);
##i = 0;
$$result = "";
while( ##i < ##c ) {
$$one = dllfuncstr("GetEmailList", $$1, ##i);
$$name = dllfuncstr("SetNameOnly", $$one);
$$email = dllfuncstr("SetEmailOnly", $$one);
if( $$email != "" ) {
if( $$name == "" || $$name == $$email ) {
$$name = dllfuncstr("FindBook", $$email);
if( $$name != "" ) {
$$one = $$name + " <" + $$email + ">";
}
}
if( $$result != "" ) {
$$result = $$result + ", ";
}
$$result = $$result + $$one;
}
##i = ##i + 1;
}
return $$result;
|
|