|
sinitiさん、こんばんは。
>グループ名を会社名や部門などの正式名称で設定したらアドレス帳の
>グループ名欄が長くなりすぎて見づらいので、略称で設定しています。
別名を補助情報で挿入できるような感じで検討してみました。
アドレス帳の備考8に"enable_group"を指定することで、
グループ情報を補足情報挿入として利用できますが、
備考8に"alias:" + 補足情報として挿入したい文字列
を指定してください。
グループ名欄が長くなりすぎて見づらいときの略称を"補足情報として挿入したい文
字列"
として指定してください。
これで略称情報を利用できると思います。
また試してみてください。
設定方法
グループ情報を利用する設定は
part_mode=9
グループパス情報を利用する設定は
part_mode=10
をpuku.iniに設定します。
アドレス帳で、グループ情報を利用したいアドレスが大半でグループ情報を
利用したくないアドレスの方がすくない場合、使用しないアドレスに対して
指定したほうが楽なので、下記設定 + アドレス帳備考8に"disable_group"
を指定することで、グループ情報を使用しなくなります。
指定しないアドレスはグループ情報を利用できます。
追加設定
[hmml_ins_name.mac]
group_mode=1
今まで、"enable_group"を指定するアドレス帳の備考は備考8固定でしたが、
engroup_mode=8 1〜8の間
を変更することで、変更できます。
例.
"disable_group"でグループ情報を利用しないアドレスを指定する設定
備考5から"enable_group","disable_group","alias:"+補足情報を取得する設定
[hmml_ins_name.mac]
divider=)
group_mode=1
part_mode=9
engroup_mode=5
例.
"enable_group"でグループ情報を利用するアドレスを指定する設定
グループパス情報を利用する設定
(group_modeを省略した場合も"enable_group"指定で利用アドレスを利用)
備考8から"enable_group","disable_group","alias:"+補足情報を取得する設定
(engroup_modeを省略した場合も備考8から取得)
[hmml_ins_name.mac]
divider=)
group_mode=0
part_mode=10
engroup_mode=8
//------------HMML_INS_NAME.MAC-------------
$$ver = "1.17Beta2";
$$date = "2008/06/25";
$$author = "プックン" ;
$$fname = currentmacrobasename ;
$info = "\n" + $$fname + " Ver " + $$ver+ "\n最終更新日付:"+$$date ;
$info = $info + "\n作者:"+$$author ;
disabledraw ; //画面の書き換えを禁止します。
call HidemaruMail ;
//ソフト版数チェック
##require = 450 ;
##ver = dllfunc("TuruKameVersion");
if ( ##ver < ##require ) {
message "秀丸メールがVer" +
leftstr(str(##ver),1) + "." +
midstr( str(##ver), 1, length(str(##ver))-1 ) +
"です。Ver" +
leftstr(str(##require),1) + "." +
midstr( str(##require), 1, length(str(##require))-1 ) +
"以降を使用してください。\n" ;
goto LEND;
}
//秀丸メールの本体ウィンドウ中かどうか
if(dllfunc("IsHidemaruMailMain")){
message "秀丸メールエディタウィンドウで実行してください。\n" + $info ;
goto LEND ;
}
//新規作成時処理用に情報を取得
##MailType = dllfunc("MailType") ;
//-1:何も無い場合
//0:新規作成のメール
//1:返信メール
//2:転送メール
//3:受信したメールの場合
//4:送信済みメールの場合
//5:未送信フォルダまたは草稿フォルダに保存された未送信メール
//6:「添付ファイルとして転送」で作成されたメールで、まだ保存されてない段
階の物。
//-1:何も無い場合
//0:新規作成のメール
//1:返信メール
//2:転送メール
//3:受信したメールの場合
//4:送信済みメールの場合
//5:未送信フォルダまたは草稿フォルダに保存された未送信メール
//6:「添付ファイルとして転送」で作成されたメールで、まだ保存されてない段
階の物。
if(##MailType == 3){
message "マクロの対象外メールです。" + $info ;
goto LEND ;
}
//送信済みメールの場合
else if(##MailType == 4){
question "\"送信済みメール\"の編集を許可してもよいですか?\n" + $info ;
if( result == yes ) {
//送信済みメールや受信メールをエディタ・ウィンドウで開いている時
に、「編集を許可」します。
//エディタ・ウィンドウ上で、編集が禁止された状態になっている時に
のみ有効な関数です。
//編集できる状態かどうかは、秀丸マクロのreadonlyキーワードを使え
ば分かります。
if(readonly){
##n = dllfunc( "EnableEdit" );
call Res_check ##n , "編集を許可できませんでした\n" + $info ;
}
}
else goto LEND ;
}
//検索実行後insertを実行したときに、"選択範囲"の場合に、検索した文字列
//の上に挿入してしまうのを防ぐため。
//検索での表示 点滅表示/範囲選択の情報を取得する。
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
#reg_search = searchmode;
writeregnum "SelectFound",0; //点滅表示に変更する
envchanged;
closereg ;
$sbuf = searchbuffer ; //マクロ終了時に、検索条件を復元するため記憶
#sopt = searchoption ;
$rbuf = replacebuffer;
//文字列挿入
//現在位置に、文字を挿入してカーソル位置を記録しておく。
//To,Subjectが空白だと、その位置に移動するため、テンプレートで
//指示した$cの位置を記憶する。
$$cur_char = "@c@" ;
##cur_move = 0 ;
//カーソル位置を確認する。
if(y >= 0){ //メール本文の場合に、$$cur_charを挿入する。
insert $$cur_char ;
##cur_move = 1 ;
}
else{
//Headerの場合 and
//テンプレートでカーソル位置の指定があった場合に、、$$cur_charを挿入する。
moveto 0,-1 ;
tab ;
if((x != 0) || (y != 0)){
insert $$cur_char ;
##cur_move = 1 ;
}
}
//初期定義
//アカウント名を取得
$$account = dllfuncstr("ExecAtMain", "CurrentAccount") ;
call Str_check $$account,"アカウントの取得に失敗しました。\n" + $info ;
//INIファイル
//定義ファイル(INIファイル)
$$ini = dllfuncstr("HomeDir") +
$$account +
"\\puku.ini" ;
//セクション
$$Section = currentmacrobasename ;
//Alt が押されているとき、CCの敬称付き宛名の先頭文字を省略する。
if ( iskeydown(0x12) ) {
##cc_char_disable = 1 ;
writeinistr $$ini, $$Section, "cc_char_disable", "1" ;
}
//Shift が押されているとき、cc_modeを一時的に切り替える
if ( iskeydown(0x10) ) {##cc_mode_inv = 1 ;}
//もしくはiniファイルの"cc_mode_inv"情報が"1"のとき
//cc_modeを一時的に切り替える
else if (getinistr($$ini,$$Section,"cc_mode_inv") == "1") {
##cc_mode_inv = 1 ;
writeinistr $$ini, $$Section, "cc_mode_inv", 0 ;
}
//to_skip
//Ctrl が押されているとき、to_skip_modeを一時的に切り替える
if ( iskeydown(0x11) ) {##to_skip_mode_inv = 1 ;}
//もしくはiniファイルの"cc_mode_inv"情報が"1"のとき
//cc_modeを一時的に切り替える
else if (getinistr($$ini,$$Section,"to_skip_mode_inv") == "1") {
##to_skip_mode_inv = 1 ;
writeinistr $$ini, $$Section, "to_skip_mode_inv", 0 ;
}
$$wk = getinistr($$ini,$$Section,"Get_info_ini");
if($$wk == ""){
//情報がなにもないのでiniファイルのサンプルを作成する。
writeinistr $$ini, $$Section, "Get_info_ini", "0" ;
writeinistr $$ini, $$Section, "// Get_info_ini(Default=0) 0:ini
ファイルから敬称list情報を取得しない。1:取得する。", "" ;
writeinistr $$ini, $$Section, "//Get_info_ini", "1" ;
writeinistr $$ini, $$Section, "// name(Default=0): 0 = アドレス
帳から名前を取得,1 = ヘッダから名前を取得", "" ;
writeinistr $$ini, $$Section, "//name", "0" ;
writeinistr $$ini, $$Section, "// keisyou_modeとは(Default=0)",
"" ;
writeinistr $$ini, $$Section, "// 0 = Defaultの敬称をつける", "" ;
writeinistr $$ini, $$Section, "// 1 = アドレス帳の備考 を取得し
てつける", "" ;
writeinistr $$ini, $$Section, "// 2 = アドレス帳の備考2を取得し
てつける", "" ;
writeinistr $$ini, $$Section, "// 3 = アドレス帳の備考3を取得し
てつける", "" ;
writeinistr $$ini, $$Section, "//keisyou_mode", "3" ;
writeinistr $$ini, $$Section, "// pos(Default=0): 0 = 先頭に挿入,
1 = 定義文字列の位置に挿入,2=カーソル位置に挿入", "" ;
writeinistr $$ini, $$Section, "//pos", "1" ;
writeinistr $$ini, $$Section, "// home_c(Default=@P@): ホームポ
ジション定義キャラクタ", "" ;
writeinistr $$ini, $$Section, "//home_c", "@P@" ;
writeinistr $$ini, $$Section, "// keisyou_def(Default=殿):敬称De
fault取得", "" ;
writeinistr $$ini, $$Section, "//keisyou_def", "様" ;
writeinistr $$ini, $$Section, "// char_def(Default=なし): 複数の
名前の場合間に挿入するキャラクタ。ins_ret_mode=0のときに設定するとよい。", "" ;
writeinistr $$ini, $$Section, "//char_def", "," ;
writeinistr $$ini, $$Section, "//ins_ret_mode(Default=1) : 0 = なに
もしない,1= 複数の名前の間に改行を挿入する", "" ;
writeinistr $$ini, $$Section, "//ins_ret_mode", "0" ;
writeinistr $$ini, $$Section, "// adr_mode(Default=1):0 = 何もし
ない,1 = To:の情報がないときにアドレス帳を起動する", "" ;
writeinistr $$ini, $$Section, "//adr_mode", "0" ;
writeinistr $$ini, $$Section, "// div_name(Default=0):0 = 何もし
ない,1 = 半角空白を名前から探し、その前の部分のみ利用する", "" ;
writeinistr $$ini, $$Section, "//div_name", "1" ;
writeinistr $$ini, $$Section, "// cc_mode(Default=0):0 = なにも
しない,1 = CCの情報から名前を取得しメール本文に挿入する", "" ;
writeinistr $$ini, $$Section, "//cc_mode", "1" ;
writeinistr $$ini, $$Section, "// cc_char[Default=\"CC)\"]: ccで
取得した名前の前に挿入するキャラクタ", "" ;
writeinistr $$ini, $$Section, "//cc_char", "CC)" ;
writeinistr $$ini, $$Section, "// del_to_name[Default=0]: To,Cc
の名前情報を削除するOption。0=To,Cc Headerの名前情報を削除しない。1=削除する。
", "" ;
writeinistr $$ini, $$Section, "//del_to_name", "0" ;
writeinistr $$ini, $$Section, "// del_newmail_to_name[Default=
0]: 新規作成時To,Ccの名前情報を削除するOption。0=新規作成時To,Cc Headerの名
前情報を削除しない。1=削除する。", "" ;
writeinistr $$ini, $$Section, "//del_newmail_to_name", "0" ;
writeinistr $$ini, $$Section, "// chg_to_name[Default=0]: Header
Toの名前情報を変更するOption。0=To Headerの名前情報を変更しない。1=名前情報
を変更する。", "" ;
writeinistr $$ini, $$Section, "//chg_to_name", "0" ;
writeinistr $$ini, $$Section, "// div_name_header[Default=0]: di
v_name_header=1のとき半角空白以降を削除するOption。0=半角空白以降を削除しな
い。1=半角空白以降を削除する。", "" ;
writeinistr $$ini, $$Section, "//div_name_header", "0" ;
writeinistr $$ini, $$Section, "// add_to_keisyou[Default=0]: Hea
der Toの名前情報に敬称を追加するOption。0=Header Toに敬称を追加しない。1=Hea
der Toに敬称を追加する", "" ;
writeinistr $$ini, $$Section, "//add_to_keisyou", "0" ;
writeinistr $$ini, $$Section, "// chg_cc_name[Default=0]: Header
Ccの名前情報を変更するOption。0=To Headerの名前情報を変更しない。1=名前情報
を変更する。", "" ;
writeinistr $$ini, $$Section, "//chg_cc_name", "0" ;
writeinistr $$ini, $$Section, "// add_cc_keisyou[Default=0]: Hea
der Ccの名前情報に敬称を追加するOption。0=Header Ccに敬称を追加しない。1=Hea
der Toに敬称を追加する。", "" ;
writeinistr $$ini, $$Section, "//add_cc_keisyou", "0" ;
writeinistr $$ini, $$Section, "// to_skip_mode(Default=0):0 = な
にもしない,1 = Toの情報から名前を取得しメール本文に挿入するのを抑制する", "" ;
writeinistr $$ini, $$Section, "//to_skip_mode", "0" ;
writeinistr $$ini, $$Section, "// part_modeとは(Default=0)", "" ;
writeinistr $$ini, $$Section, "// 0 = 補足情報を挿入しない", "" ;
writeinistr $$ini, $$Section, "// 1 = アドレス帳の備考 を取得し
てつける", "" ;
writeinistr $$ini, $$Section, "// 2 = アドレス帳の備考2を取得し
てつける", "" ;
writeinistr $$ini, $$Section, "// 3 = アドレス帳の備考3を取得し
てつける", "" ;
writeinistr $$ini, $$Section, "//keisyou_mode", "3" ;
}
//div_name
//取得した名称に半角空白がある場合、その前の部分のみ取得するoption
//0 = 何もしない
//1 = 半角空白を名前から探し、その前の部分のみ利用する
##div_name = getininum($$ini,$$Section,"div_name");
if((##div_name < 0) || (##div_name > 1)){
##div_name = 0 ; //default
}
//adr_mode
//0 = 何もしない
//1 = To:の情報がないときにアドレス帳を起動する
//アドレス帳起動モードを取得
$$wk = getinistr($$ini,$$Section,"adr_mode");
if($$wk == ""){
$$wk = "1" ;
}
##adr_mode = val($$wk) ;
//INIファイルから文字列を取りだします。
if((##adr_mode < 0) || (##adr_mode > 1)){
##adr_mode = 1 ; //default
}
//ホームポジション定義キャラクタ
//ホームポジションキャラクタ:名前情報作成後、
//カーソルをこの文字の位置に移動
//ホームポジションキャラクタ取得
$$home_c = getinistr($$ini,$$Section,"home_c");
//INIファイルから文字列を取りだします。
if($$home_c == ""){
$$home_c = "@P@" ; //default
}
//pos
//0 = 先頭に挿入
//1 = 定義文字列の位置に挿入
//2 = カーソル位置に挿入
//文字列挿入位置情報を取得
##pos = getininum($$ini,$$Section,"pos");
//INIファイルから文字列を取りだします。
if((##pos < 0) || (##pos > 2)){
##pos = 0 ; //default
}
//to_skip_mode
//0 = なにもしない
//1 = Toに対して文字列挿入処理をskipする
//文字列挿入位置情報を取得
##to_skip_mode = getininum($$ini,$$Section,"to_skip_mode");
//INIファイルから文字列を取りだします。
if((##to_skip_mode < 0) || (##to_skip_mode > 1)){
##to_skip_mode = 0 ; //default
}
//Shiftを押して実行したときに#to_skip_modeを切り替える
##to_skip_mode = (##to_skip_mode + ##to_skip_mode_inv) % 2 ;
//cc_mode
//0 = なにもしない
//1 = CCの情報から名前を取得しメール本文に挿入する
//文字列挿入位置情報を取得
##cc_mode = getininum($$ini,$$Section,"cc_mode");
//INIファイルから文字列を取りだします。
if((##cc_mode < 0) || (##cc_mode > 1)){
##cc_mode = 0 ; //default
}
//Shiftを押して実行したときに#cc_modeを切り替える
##cc_mode = (##cc_mode + ##cc_mode_inv) % 2 ;
//Toの名前情報を削除するflag
//To,Ccの名前情報を削除するoption取得
##del_to_name = getininum($$ini,$$Section,"del_to_name");
//新規作成時To,Ccの名前情報を削除するoption取得
##del_newmail_to_name = getininum($$ini,$$Section,"del_newmail_to_na
me");
//Toの名前情報をアドレス帳の名前にするflag
//敬称も付加する。
##chg_to_name = getininum($$ini,$$Section,"chg_to_name");
##div_name_header = getininum($$ini,$$Section,"div_name_header");
##add_to_keisyou = getininum($$ini,$$Section,"add_to_keisyou");
##chg_cc_name = getininum($$ini,$$Section,"chg_cc_name");
##add_cc_keisyou = getininum($$ini,$$Section,"add_cc_keisyou");
//挿入文字列を変換する。英数字のみ半角化。
##cnv_filter = getininum($$ini,$$Section,"cnv_filter");
if( (##cnv_filter == 1) &&
(dllfunc("HidemaruMailVersion") <= 454)){
message
"変換用Filter機能は、\n"+
"秀丸メールVer4.54以前では使用できません。\n" + $info ;
}
//-------------------main------------------
//アドレス帳の起動
if(##adr_mode == 1){
$$wk = dllfuncstr( "CurrentHeader", "To" );
if($$wk == ""){
#n = dllfunc( "AdrBook");
}
}
//アドレス帳から名前取得
//To_headerから名前取得
//なければemailアドレス
//Toの情報を取得する。
//サブルーチン get_to_list:
//機能:引数で指定したヘッダ情報を取得する。
//第一引数: 文字列型,ヘッダー種類(To,Cc,Bccなど)
//戻り値: 文字列型,引数で指定したヘッダ情報(複数の場合は、
//"," + 改行が途中に入る
if(##to_skip_mode == 0){
call get_to_list "To" ;
$$To_inf = $$return ;
}
//敬称情報の処理
//敬称list情報をiniファイルから取得するか、否かの設定。
//get_info_ini
//0:iniファイルから取得しない。1:取得する。
##get_info_ini = getininum($$ini,$$Section,"Get_info_ini");
$$key = "kei" ;
//敬称のチェック用
if(##get_info_ini == 1){
call Set_default $$ini,$$Section,$$key ;
call Get_list $$ini ,$$Section, $$key ;
//戻り値:拡張子定義個数
##chk_cnt = ##return ;
}
else{
//敬称の種類を登録
//登録数
writeinistr $$ini, $$Section, "Get_info_ini", "0" ;
##chk_cnt = 0 ;
$get_list[##chk_cnt] = "殿" ; ##chk_cnt = ##chk_cnt + 1 ;
$get_list[##chk_cnt] = "様" ; ##chk_cnt = ##chk_cnt + 1 ;
$get_list[##chk_cnt] = "御中" ; ##chk_cnt = ##chk_cnt + 1 ;
$get_list[##chk_cnt] = "さん" ; ##chk_cnt = ##chk_cnt + 1 ;
$get_list[##chk_cnt] = "ちゃん" ; ##chk_cnt = ##chk_cnt + 1 ;
$get_list[##chk_cnt] = "君" ; ##chk_cnt = ##chk_cnt + 1 ;
$get_list[##chk_cnt] = "くん" ; ##chk_cnt = ##chk_cnt + 1 ;
}
//敬称情報の正規表現文字列を作成。
$$dllfile = loaddllfile ;
if($$dllfile != "") freedll;
if(existfile( hidemarudir + "\\DengakuDLL.dll")){
##dengaku_use = 1 ;
call Dengaku ;
}
else{
##dengaku_use = 0 ;
}
//正規表現の敬称確認文字列作成。
##i = 0 ;
$$reg_keisyou = "(" ;
while(##i < ##chk_cnt){
if((##i +1) == ##chk_cnt) $$wk = "" ;
else $$wk = "|" ;
call reg_escape $get_list[##i],##dengaku_use ;
$$s = $$return ;
$$reg_keisyou = $$reg_keisyou + $$s + $$wk ;
##i = ##i + 1;
}
$$reg_keisyou = $$reg_keisyou + ")$" ;
if(##dengaku_use){
//田楽DLLを開放
freedll ;
if($$dllfile != "") loaddll $$dllfile ;
}
//敬称のチェックする正規表現のoptionを作成。HmJre.dllを利用。
freedll;
call HmJre ;
//戻り値:1=HmJreを利用してmatch判定ができる場合。0=利用できない場合。
##reg_flag = ##return ;
freedll;
call HidemaruMail ;
//利用可能。
if( ##reg_flag == 1 ) {
writeinistr $$ini, $$Section, "reg_keisyou", $$reg_keisyou ;
}
//利用不可能。
else{
$$reg_keisyou = "" ;
writeinistr $$ini, $$Section, "reg_keisyou", 0 ;
}
//Toの処理
//サブルーチンget_to_listで取得した文字列が存在する場合
if($$To_inf != ""){
//グローバル変数$list(配列),
//グローバル変数$list_keisyou(配列),
//グローバル変数$list_part(配列)に代入する。
call Make_name $$ini,$$Section,$$To_inf ;
##cnt = ##return ;
}
else {
##cnt = 0 ;
}
if(##cnt != 0){
//Header To,Ccの名前情報を削除するOption
if( (##del_to_name == 1) ||
//新規作成時、To,Ccの名前情報を削除するOption
((##MailType == 0 ) && (##del_newmail_to_name == 1))){
call del_to_name $$To_inf,"To" ;
}
else if(##chg_to_name){
//区切り文字列を取得
$$divider = getinistr($$ini,$$Section,"divider");
if($$divider == "") $$divider = " " ;
//Header Toの名前情報を変更する。
call chg_to_name $$To_inf,"To",##add_to_keisyou ,##div_name_head
er,$$reg_keisyou,$$divider ;
}
else if(##add_to_keisyou){
//Header Ccの名前情報に敬称を付加する。
call add_to_keisyou $$To_inf,"To" ,$$reg_keisyou;
}
if(##cnt != 0){
//第四引数: 数値型,ccを実施するモードフラグ=0
call Make_str $$ini,$$Section,##cnt ,0,##div_name;
$$to_name = $$return ;
}
}
//Ccの処理
if( (##cc_mode == 1) ||
(##del_to_name == 1) ||
(##del_newmail_to_name == 1) ||
(##chg_cc_name == 1) ||
(##add_cc_keisyou == 1) ){
//Ccの情報を取得する。
//サブルーチン get_to_list:
//機能:引数で指定したヘッダ情報を取得する。
//第一引数: 文字列型,ヘッダー種類(To,Cc,Bccなど)
//戻り値: 文字列型,引数で指定したヘッダ情報(複数の場合は、
//"," + 改行が途中に入る
call get_to_list "Cc" ;
$$Cc_inf = $$return ;
//サブルーチンget_to_listで取得した文字列が存在する場合
if($$Cc_inf != ""){
call Make_name $$ini,$$Section,$$Cc_inf ;
##cnt = ##return ;
}
else {
##cnt = 0 ;
}
if(##cnt != 0){
//Header To,Ccの名前情報を削除するOption
if( (##del_to_name == 1) ||
//新規作成時、To,Ccの名前情報を削除するOption
((##MailType == 0 ) && (##del_newmail_to_name == 1))){
call del_to_name $$Cc_inf,"Cc" ;
}
else if(##chg_cc_name){
//Header Ccの名前情報を変更する。
call chg_to_name $$Cc_inf,"Cc",##add_cc_keisyou ,##div_name_
header,$$reg_keisyou,$$divider ;
}
else if(##add_cc_keisyou){
//Header Ccの名前情報に敬称を付加する。
call add_to_keisyou $$Cc_inf,"Cc" ,$$reg_keisyou ;
}
if(##cc_mode == 1){
//第四引数: 数値型,ccを実施するモードフラグ=1
call Make_str $$ini,$$Section,##cnt ,##cc_mode,##div_name;
$$cc_name = $$return ;
}
}
}
if(##cc_char_disable == 1){
writeinistr $$ini, $$Section, "cc_char_disable", 0 ;
}
//INIファイルにデータを書きこむ文です。
//writeinistr INIファイル名, セクション名, キー名, 文字
//writeinistr "HIDEMARU.INI", "Option", "RefMark", ">> ";
//挿入位置に移動
if(##pos == 0){
moveto 0,0 ; //本文の先頭に移動
}
else if(##pos == 1){
moveto 0,-1 ; //Headerの最終行に移動
golineend2 ; //論理行末に移動
replacedown $$home_c , "" , casesense;
if(!result){
//ホームポジションの移動に失敗したとき、本文先頭に移動
moveto 0,0 ;
}
}
else{ //##pos == 2のとき
if(##cur_move == 1){
moveto 0,-1; //Headerの最終行に移動
golineend2 ; //論理行末に移動
searchdown $$cur_char,casesense ;
call Res_check result , "cur char not found.\n" + $$cur_char + "
\n" + $info ;
}
else{
if(y < 0){ //Headerの場合、カーソルを本文先頭に移動。
moveto 0,0 ;
}
}
}
//To情報の文字列挿入skip無効時 and To情報が存在するとき、文字列挿入を実施。
if((##to_skip_mode == 0) && ($$to_name != "")){
##x = x ;##y = y ;
insert $$to_name ;
$$ret = "\n" ;
if( (##cnv_filter == 1) &&
(dllfunc("HidemaruMailVersion") > 454)){
beginsel ;
moveto ##x,##y ;
execmacro currentmacrodirectory + "\\HMML_INS_NAME_FILTER.MAC" ;
moveto selendx,selendy;
escape ;
}
}
//To情報の文字列情報挿入をskip
else{
$$ret = "" ;
}
//Cc情報の文字列挿入
if ((##cc_mode == 1) && //ccモード有効時 and
($$cc_name != "")){ //cc_nameに情報があるとき
##x = x ;##y = y ;
insert $$ret + $$cc_name ;
if( (##cnv_filter == 1) &&
(dllfunc("HidemaruMailVersion") > 454)){
beginsel ;
moveto ##x,##y ;
execmacro currentmacrodirectory + "\\HMML_INS_NAME_FILTER.MAC" ;
moveto selendx,selendy;
escape ;
}
}
//カーソル移動用のキャラクタを挿入済みのときの処理
//キャラクタを削除する。
if(##cur_move == 1){
moveto 0,-1; //Headerの最終行に移動
golineend2 ; //論理行末に移動
replacedown $$cur_char,"" ,casesense ;
call Res_check result , "cur char not found.\n" + $$cur_char + "\n"
+ $info ;
}
//Subjectと、Toを取得し、空白の場合、その位置に移動する。
$$To = dllfuncstr( "CurrentHeader", "To" );
if($$To == "") {
moveto 0,-1; //Headerの最終行に移動
golineend2 ; //論理行末に移動
searchup "^To:",regular ;
escape ; //範囲選択を取り消す
right ;
}
else{
$$Sub = dllfuncstr( "CurrentHeader", "Subject" );
if($$Sub == "") {
moveto 0,-1; //Headerの最終行に移動
golineend2 ; //論理行末に移動
searchup "^Subject:",regular ;
escape ; //範囲選択を取り消す
right ;
}
}
LEND:
//敬称情報の正規表現文字列を削除
if( existfile( hidemarudir + "\\DengakuDLL.dll") &&
existfile( hidemarudir + "\\BREGEXP.dll")){
writeinistr $$ini, $$Section, "reg_keisyou", 0 ;
}
setsearch $sbuf, #sopt; //開始時の検索文字,optionに戻す
setreplace $rbuf ;
//検索での表示 点滅表示/範囲選択の情報を戻す。
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
writeregnum "SelectFound",#reg_search;
closereg;
envchanged;
enabledraw ; //画面書き換えを許可します。
freedll;
endmacro;
HidemaruMail: //秀丸メール起動チェック&DLLロード
//機能:TKInfo.dllをロードする
//秀シリーズサポートHPより 抜粋
// DLL を Load する
openreg "CURRENTUSER","Software\\Hidemaruo\\TuruKame\\Config";
##res = result ;
closereg ;
if( !##res ) {
message "秀丸メールがインストールされてないです (^^;)\n"+$info;
endmacro;
}
loaddll "TKInfo.dll";
if( !result ) {
message "DLLロードに失敗\n"+$info;
endmacro;
}
return ;
get_to_list:
//機能:引数で指定したヘッダ情報を取得する。
//第一引数: 文字列型,ヘッダー種類(To,Cc,Bccなど)
//戻り値: 文字列型,引数で指定したヘッダ情報(複数の場合は、"," + 改行が
途中に入る
//引数渡し
$$header = $$1;
call Str_check $$header,"サブルーチンget_to_list 第一引数(文字列型)がお
かしいです\n" + $info ;
$$to = "" ;//初期化
##Header_count = dllfunc("CountCurrentHeader", $$header);
while( ##i < ##Header_count ) {
$$wk = dllfuncstr("CurrentHeader2", $$header, ##i);
##wk = dllfunc("CountEmailList", $$wk);
if(##wk != 0){
if($$to != ""){
$$to = $$to + ", \n " + $$wk ;
}
else{
$$to = $$wk ;
}
}
##i = ##i + 1;
}
return $$to ;
Get_list:
//機能:引数で指定したiniファイルから情報を取得し、グローバル変数にsetする。
//引数渡し
//第一引数: 文字列型,listを取得するiniファイルを指定
$$ini = $$1;
//第二引数: 文字列型,listを取得するiniファイルのセクション名を指定
$$Section = $$2;
//第三引数: 文字列型,listを取得するiniファイルのkeyを指定
//keyは、"#" + 数字 + 指定文字列
//を連結した文字列をgetinistrにて使用
$$key = $$3;
//戻り値
//取得した配列の数
//および、グローバル変数 $get_listに取得した配列を保存
if($$ini == ""){
message "サブルーチンGet_list:第一引数エラー。\n" + $info ;
goto LEND ;
}
else if(! existfile( $$ini )) {
//変数(配列) $listの内容を削除
##i = 0 ;
while( $get_list[##i] != "" ) {
//変数の値削除
$get_list[##i] = "" ;
##i = ##i + 1;
}
return 0 ;
}
if($$Section ==""){
message "サブルーチンGet_list:第二引数エラー。\n" + $info ;
goto LEND ;
}
if($$key ==""){
message "サブルーチンGet_list:第三引数エラー。\n" + $info ;
goto LEND ;
}
//変数(配列) $get_listの内容を削除
##i = 0 ;
while( $get_list[##i] != "" ) {
//変数の値削除
$get_list[##i] = "" ;
##i = ##i + 1;
}
//敬称登録最大数
##max_info = val(getinistr($$ini,$$Section,"max_info"));
if(##max_info == 0){
##max_info = 20 ;
}
##menu_su = 0 ; //初期化
while( ##menu_su < ##max_info )
{
//INIファイルから文字列を取りだします。
//getinistr( s1, s2, s3 )
//s1がiniファイル名、s2がセクション名、s3がキー名です。
$$wk = getinistr( $$ini , $$Section , "#" + str( ##menu_su ) +"_"+ $
$key );
if( $$wk == "" )
{
break;
}
$get_list[##menu_su] = $$wk ;
##menu_su = ##menu_su + 1;
}
return ##menu_su ;
Set_default:
//処理:Iniファイルの各種設定情報がなければびデフォルトを設定する
//第一引数: 文字列型,listを取得するiniファイルを指定
$$ini = $$1;
//第二引数: 文字列型,listを取得するiniファイルのセクション名を指定
$$Section = $$2;
//第二引数: 文字列型,listを取得するiniファイルのkeyを指定
//keyは、"#" + 数字 + 指定文字列
//を連結した文字列をgetinistrにて使用
$$key = $$3;
//戻り値
//なし。
if($$ini == ""){
message "サブルーチンSet_default:第一引数エラー。\n" + $info ;
goto LEND ;
}
if($$Section ==""){
message "サブルーチンSet_default:第二引数エラー。\n" + $info ;
goto LEND ;
}
if($$key ==""){
message "サブルーチンSet_default:第三引数エラー。\n" + $info ;
goto LEND ;
}
//テンプレート名情報
$$wk = getinistr( $$ini , $$Section , "#0_" + $$key );
//iniファイルから$$Sectionの "#0_" + $keyの情報を取得し、情報が無ければ
//デフォルト情報を設定する。
if( $$wk == "" ){
##array_cnt = 0;
$$array[##array_cnt] = "殿" ; ##array_cnt = ##array_cnt + 1;
$$array[##array_cnt] = "様" ; ##array_cnt = ##array_cnt + 1;
$$array[##array_cnt] = "御中" ; ##array_cnt = ##array_cnt + 1;
$$array[##array_cnt] = "ちゃん" ; ##array_cnt = ##array_cnt + 1;
$$array[##array_cnt] = "君" ; ##array_cnt = ##array_cnt + 1;
$$array[##array_cnt] = "くん" ; ##array_cnt = ##array_cnt + 1;
##i = 0 ;
while( ##i < ##array_cnt ) {
writeinistr $$ini, $$Section, "#" + str( ##i ) + "_"+ $$key, $$
array[##i] ;
//INIファイルにデータを書きこむ文です。
//writeinistr INIファイル名, セクション名, キー名, 文字
//writeinistr "HIDEMARU.INI", "Option", "RefMark", ">> ";
##i = ##i + 1;
}
message currentmacrobasename + "\nマクロ" +
"敬称list情報を下記場所\n" +
" " + $$ini + "\n" +
"に作成しました。";
}
return ;
Make_name :
//処理: 第一引数で指定された文字列から名前情報を作成する。
// 作成した情報は
// グローバル変数$list(配列),
// グローバル変数$list_keisyou(配列),
// グローバル変数$list_part(配列)に代入する。
//引数渡し
//第一引数: 文字列型,listを取得するiniファイルを指定
$$ini = $$1 ;
//第二引数: 文字列型,listを取得するiniファイルのセクション名を指定
$$Section = $$2 ;
//第三引数: 文字列型,チェックを行うHeader
$$To_inf = $$3 ;
if($$ini == ""){
message "サブルーチンMake_name:第一引数エラー。\n" + $info ;
goto LEND ;
}
else if(! existfile( $$ini )) {
message "サブルーチンMake_name:第一引数エラー。\n" + $info ;
goto LEND ;
}
if($$Section ==""){
message "サブルーチンMake_name:第二引数エラー。\n" + $info ;
goto LEND ;
}
if($$To_inf ==""){
message "サブルーチンMake_name:第三引数エラー。\n" + $info ;
goto LEND ;
}
//処理
//コンマで区切られたメールアドレス文字列の中から、メールアドレスの個数
//を返します。
//返り値(数値型)
//メールアドレスの個数です。
##To_count = dllfunc("CountEmailList", $$To_inf);
//変数初期化
##n = ##To_count ;
while( ##n > 0 ) {
$list[##n] = "" ;
$list_keisyou[##n] = "" ;
$list_part[##n] = "" ;
##n = ##n - 1;
}
//keisyou_mode
//0 = Defaultの敬称をつける
//1 = アドレス帳の備考 を取得してつける
//2 = アドレス帳の備考2を取得してつける
//3 = アドレス帳の備考3を取得してつける
//4 = アドレス帳の備考4を取得してつける
//5 = アドレス帳の備考5を取得してつける
//6 = アドレス帳の備考6を取得してつける
//7 = アドレス帳の備考7を取得してつける
//8 = アドレス帳の備考8を取得してつける
//9 = ドメイン別で敬称をつける
//備考,備考2,備考3,備考4-8から取得できなかった場合、Defaultを定義する。
//敬称モードを取得
##keisyou_mode = getininum($$ini,$$Section,"keisyou_mode");
//FindBookNote4〜FindBookNote8が対応された秀丸メールの版数を
//Ver4.65以降 or Ver464Beta8以降と定義する。
//4.65より前の版数の場合、##keisyou_modeを一時的に修正する。
//メモ:FindBookNote4〜FindBookNote8は、秀丸メールVer4.64Beta8より対応。
//部署名モードを取得
##part_mode = getininum($$ini,$$Section,"part_mode");
##ver = dllfunc("TuruKameVersion");
if(##ver == 464){
//HidemaruMail 4.64beta8 (WinNT,500)
//HidemaruMail 4.63 (WinNT,500)
//HidemaruMail 4.64beta8 ←XmailerにWindowsのバージョンがない場合
$$wk = dllfuncstr("XMailer") ;
call Str_check $$wk , "XMailer情報取得エラー\n" + $info ;
//版数を取得するため" "の位置を認識
##n = strstr($$wk," ");
//文字列"HidemaruMail "を削除。
$$wk = midstr($$wk,##n + 1,strlen($$wk) -1) ;
##n = strstr($$wk," ");
//Windowsのバージョンがあるときに、秀丸メールの版数だけ取得する。
if(##n != -1) {
$$wk = leftstr($$wk,##n) ;
}
//betaの版数があるかどうかチェックする。
##n = strstr($$wk,"beta") ;
if(##n != -1){
##beta = val(midstr($$wk,##n + strlen("beta") ,strlen($$wk) - st
rlen("beta"))) ;
$$wk = leftstr($$wk,##n) ;
}
##ver = val(leftstr($$wk,1) + midstr($$wk,2,2)) ;
}
//秀丸メール Ver4.64より前の版数 or
//Ver4.64 Beta1〜Beta7の版数のとき
if( (##ver < 464) ||
((##ver == 464) &&
((##beta > 0) && (##beta < 8)))){
##limit_bikou = 3 ;
##limit_keisyou = 3 ;
}
else{
//備考=8 + グループ,グループパス
##limit_bikou = 8 + 2;
//domain modeを追加
##limit_keisyou = 8 + 1 ;
}
//INIファイルから文字列を取りだします。
if((##part_mode < 0) || (##part_mode > ##limit_bikou)){
##part_mode = 0 ; //default
}
//INIファイルから文字列を取りだします。
if((##keisyou_mode < 0) || (##keisyou_mode > ##limit_keisyou)){
##keisyou_mode = 0 ; //default
}
//9 = ドメイン別で敬称をつける
if(##keisyou_mode == 9){
$$account = dllfuncstr("ExecAtMain", "CurrentAccount") ;
##n = dllfunc("LoadAccountProp", $$account );
$$wk = dllfuncstr("GetAccountProp","szEmail");
##n = strstr($$wk,"@");
if(##n == -1){
message "Email:Domain error.\n" + $$wk + "\n" + $info ;
goto LEND;
}
$$self_domain = midstr( $$wk, ##n +1, strlen($$wk) - ##n - 1 ) ;
//自分のドメインと異なる場合の敬称
$$keisyou_otherdomain = getinistr($$ini,$$Section,"keisyou_other");
//未定義のとき
if($$keisyou_otherdomain == "") $$keisyou_otherdomain = "様" ;
}
//敬称情報が下記定義のとき、敬称を付加しない。
$$word = getinistr($$ini,$$Section,"not_apply");
if($$word == "") $$word = "not_apply" ;
//敬称list情報数を取得
##i = 0 ;
while(1){
if($get_list[##i] == "") break ;
##i = ##i + 1;
}
//敬称list情報の数
##chk_cnt = ##i ;
##i = 0;
while( ##i < ##To_count ) {
//GetEmailList
//コンマで区切られたメールアドレス文字列の中から、
//パラメータで指定された部分のメールアドレス部分を1つ取り出します。
//返り値(文字列型)
//取り出したメールアドレス部分です。ここは、abc <abc@abc> のように、
//名前 + メールアドレスとなっていることもあります。
//この部分はコンマで区切られた内容をそのまま返す。
$$inf = dllfuncstr("GetEmailList", $$To_inf, ##i);
//mode
//0 = アドレス帳から名前を取得
//1 = ヘッダから名前を取得
//名前の情報を取得するモードを取得
##mode = getininum($$ini,$$Section,"name");
//INIファイルから文字列を取りだします。
if((##mode < 0) || (##mode > 1)){
##mode = 0 ; //default
}
if(##mode == 0 ){
//パラメータで渡された名前+Emailの中からEmail部分を取り出し、
//そのEmailをアドレス帳から検索し、見つかった場合はその名前
//を返し、見つからなかった場合はパラメータで渡された文字列中
//の名前部分を返す。
//パラメータにはEmailのみでも名前+Emailでもどちらでも受け付
//けます。
//アドレス帳に同じEmailが複数登録されている場合は一番先頭に
//登録されているメンバーのみが対象となります。
$$name = dllfuncstr( "FindBook2", $$inf);
}
else{ //mode == 1
//SetNameOnly
//パラメータで渡された「名前+Email」の形式の文字列から、名前部分の
//みを取り出して返します。
//返り値(文字列型)
//取り出された名前部分の文字列です。名前部分が見つからない場合は
//メールアドレスをそのまま返します。
$$name = dllfuncstr( "SetNameOnly", $$inf );
//SetEmailOnly
//パラメータで渡された「名前+Email」の形式の文字列から、
//Email部分のみを取り出して返します。
$$email = dllfuncstr( "SetEmailOnly", $$inf );
//内容が同じ場合、名前の取得を失敗している。
//アドレス帳から名前を取得する処理を実施
if($$email == $$name){
$$name = dllfuncstr( "FindBook2", $$inf);
}
}
//パラメータで渡された文字列がもしダブルクォーテーション記号で囲まれ
ていた場合に、そのダブルクォーテーション記号(のセット)を除去します。
//返り値(文字列型)
//ダブルクォーテーション記号の除去された文字列を返します。ダブルク
ォーテーション記号で囲まれてなかった場合は元の文字列をそのまま返します。
$$name = dllfuncstr("UnDoubleQuote", $$name );
//左端の空白を削除する
while(1){
if(leftstr($$name,1) == " ") $$name = midstr($$name,1,strlen($$n
ame) -1);
else break ;
}
//右端の空白を削除する
while(1){
if(rightstr($$name,1) == " ") $$name = leftstr($$name,strlen($$n
ame) -1);
else break ;
}
//敬称定義
//敬称Default取得
$$keisyou_def = getinistr($$ini,$$Section,"keisyou_def");
//INIファイルから文字列を取りだします。
if($$keisyou_def == ""){
$$keisyou_def = "殿" ; //default
}
$$keisyou = "" ;
//敬称情報を取得する
if(##keisyou_mode == 0){
$$keisyou = $$keisyou_def ;
}
else if((1 <= ##keisyou_mode) &&
(##keisyou_mode <= 8)){
call findbooknote $$inf,##keisyou_mode ;
$$keisyou = $$return ;
}
//9 = ドメイン別で敬称をつける
else if(##keisyou_mode == 9){
$$email = dllfuncstr( "SetEmailOnly", $$inf );
##n = strstr($$email,"@");
if(##n != -1){
$$domain = midstr( $$email, ##n +1, strlen($$email) - ##n -
1 ) ;
$$self_domain = "," + $$self_domain + "," ;
//自分のドメイン情報をiniファイルから取得
$$wk = getinistr($$ini,$$Section,"selfdomain");
//空白を削除 trim
call Trim $$wk ;
$$wk = $$return ;
//↑空白を削除 trim終了
//ドメインチェックを実施
if($$wk != ""){
$$self_domain = $$self_domain + $$wk + "," ;
}
##n = strstr($$self_domain,"," + $$domain + ",");
//異なるドメインの場合
if(##n == -1){
$$keisyou = $$keisyou_otherdomain ;
}
//同じドメインの場合
else{
$$keisyou = $$keisyou_def ;
}
}
else{
$$keisyou = $$keisyou_def ;
}
}
else{
$$keisyou = $$keisyou_def ;
}
//敬称がない場合Defaultを定義
if($$keisyou ==""){
$$keisyou = $$keisyou_def ;
}
//区切り文字列を取得
$$divider = getinistr($$ini,$$Section,"divider");
if($$divider == "") $$divider = " " ;
//enable_group,disable_group情報を取得する先を
//取得する。どの備考から取得するかを得る。
##engroup_mode = getininum($$ini,$$Section,"engroup_mode");
if(##engroup_mode == 0 ){
##engroup_mode = 8 ; //Default
}
//group_mode
##group_mode = getininum($$ini,$$Section,"group_mode");
//0:enalbe_group指定があった場合、アドレス帳のグループ名を利用
//1:disable_group指定が無い場合、アドレス帳のグループ名を利用
//部署名処理
if(##part_mode == 0){
$$part = "" ;
}
else if((1 <= ##part_mode) &&
(##part_mode <= 8)){
call findbooknote $$inf,##part_mode ;
$$part = $$return ;
}
else if(##part_mode == 9){
//FindBook8関数(TkInfo.dll)
//パラメータで渡された名前+Emailの中からEmail部分を取り出し、
//そのEmailをアドレス帳から検索し、見つかった場合はその名前+Emai
lを返し、
//見つからなかった場合はパラメータで渡された名前+Emailを返します。
//パラメータにはEmailのみでも名前+Emailでもどちらでも受け付けます。
//アドレス帳に同じEmailが複数登録されている場合は一番先頭に登録
されているメンバーのみが対象となります。
//備考8の内容を返します。
call findbooknote $$inf,##engroup_mode ;
$$wk = $$return ;
//":"を含む場合、文字列を分割する
##n = strstr($$wk,":");
if(##n != -1){
$$en = leftstr( $$wk, ##n ) ;
$$wk = midstr( $$wk, ##n + 1, strlen($$wk) - ##n - 1) ;
}
//ToLower関数(TkInfo.dll)
//ToLowerは小文字に変換します。
$$en = dllfuncstr("ToLower",$$en) ;
if($$en == "alias"){
$$part = $$wk ;
}
else if(
($$en == "enable_group") ||
((##group_mode == 1) &&
($$en != "disable_group"))){
//FindBookGroup関数(TkInfo.dll)
//アドレス帳に登録されているその人のグループ名の内容を返しま
す。
//アドレス帳の直下の場合は"アドレス帳"という文字列を返します。
$$part = dllfuncstr( "FindBookGroup", $$inf);
//左端が"\"の場合、削除する。
if(leftstr( $$part, 1 ) == "\\"){
$$part = midstr( $$part, 1, strlen($$part) -1 ) ;
}
//"\"を$$dividerに置換する
if($$part != "")
call Gsub $$part,"\\\\" , $$divider ;
$$part = $$return ;
}
else $$part = "" ;
}
else if(##part_mode == 10){
call findbooknote $$inf,##engroup_mode ;
$$wk = $$return ;
//":"を含む場合、文字列を分割する
##n = strstr($$wk,":");
if(##n != -1){
$$en = leftstr( $$wk, ##n ) ;
$$wk = midstr( $$wk, ##n + 1, strlen($$wk) - ##n - 1) ;
}
//ToLower関数(TkInfo.dll)
//ToLowerは小文字に変換します。
$$en = dllfuncstr("ToLower",$$en) ;
if($$en == "alias"){
$$part = $$wk ;
}
else if(
($$en == "enable_group") ||
((##group_mode == 1) &&
($$en != "disable_group"))){
//FindBookGroupPath関数(TkInfo.dll)
//アドレス帳に登録されているグループのパス名、つまり、グルー
プの
//階層全体を返します。各グループ名の前には「\」の記号が付き
ます。
//先頭のグループ名は、"アドレス帳"か、またはLDAPサーバーの名
前となります。
//たとえば、"ABC"というグループ配下の"XYZ"というグループであ
る場合、
//\アドレス帳\ABC\XYZ
//という文字列を返します。
$$part = dllfuncstr( "FindBookGroupPath", $$inf);
//左端が"\"の場合、削除する。
if(leftstr( $$part, 1 ) == "\\"){
$$part = midstr( $$part, 1, strlen($$part) -1 ) ;
}
//"\"を$$dividerに置換する
if($$part != "")
call Gsub $$part,"\\\\" , $$divider ;
$$part = $$return ;
//先頭ノグループが"アドレス帳"の場合削除する
if(leftstr($$part,strlen("アドレス帳")) == "アドレス帳"){
$$part =
midstr($$part,strlen("アドレス帳") + strlen($$divider),
strlen($$part) - strlen("アドレス帳") - strl
en($$divider)) ;
}
}
else $$part = "" ;
}
//取得敬称情報が$$word="not_apply"でない場合
if($$keisyou != $$word){
//敬称のチェックを実施
##j = 0 ;
##res = 0 ;
while( ##j < ##chk_cnt ) {
//登録済み敬称の場合
if($get_list[##j] == $$keisyou){
##res = 1 ;
break ;
}
##j = ##j + 1;
}
//$get_listに定義していない敬称の場合、Defaultにする
if(##res ==0){
$$keisyou = $$keisyou_def ;
}
}
$list[##i] = $$name ;
$list_keisyou[##i] = $$keisyou ;
$list_part[##i] = $$part ;
##i = ##i + 1;
}
return ##To_count ;
Make_str:
//処理:挿入文字列を作成する。グローバル変数$list,$list_keisyou,
//$list_part(共に配列)を使用する。
//引数渡し
//第一引数: 文字列型,listを取得するiniファイルを指定
$$ini = $$1;
//第二引数: 文字列型,listを取得するiniファイルのセクション名を指定
$$Section = $$2;
//第三引数: 数値型,処理アドレス個数
##cnt = ##3;
//第四引数: 数値型,ccを実施するモードフラグ
##cc_mode = ##4;
//第五引数: 数値型,取得した名称に半角空白がある場合、その前の部分のみ取
得するoption
##div_name = ##5;
if($$ini == ""){
message "サブルーチンMake_str:第一引数エラー。\n" + $info ;
goto LEND ;
}
else if(! existfile( $$ini )) {
message "サブルーチンMake_str:第一引数エラー。\n" + $info ;
goto LEND ;
}
if($$Section ==""){
message "サブルーチンMake_str:第二引数エラー。\n" + $info ;
goto LEND ;
}
if(##cnt == 0){
message "サブルーチンMake_str 第三引数Error\n" + $info ;
}
//敬称情報が下記定義のとき、敬称を付加しない。
$$word = getinistr($$ini,$$Section,"not_apply");
if($$word == "") $$word = "not_apply" ;
//複数の名前の場合間に改行を挿入するモード
//ins_ret_mode
//0 = なにもしない
//1= 複数の名前の間に改行を挿入する
//ins_ret_mode取得
$$wk = getinistr($$ini,$$Section,"ins_ret_mode");
//INIファイルから文字列を取りだします。
if($$wk == ""){
##ins_ret_mode = 1 ; //default
}
else ##ins_ret_mode = val($$wk) ;
if(##ins_ret_mode == 0){
$$return_char = "" ;
}
else{
$$return_char = "\n" ;
}
//to_char
//toで取得した名前の前に挿入するキャラクタ
//キャラクタDefault取得
$$to_char_def = getinistr($$ini,$$Section,"to_char");
//INIファイルから文字列を取りだします。
if($$to_char_def == ""){
$$to_char_def = "" ; //default
}
//toで取得した名前の前に挿入するキャラクタを抑制する
if(getininum($$ini,$$Section,"to_char_enable") != 1){
$$to_char_def = "" ;
}
//cc_char
//ccで取得した名前の前に挿入するキャラクタ
//キャラクタDefault取得
$$cc_char_def = getinistr($$ini,$$Section,"cc_char");
//INIファイルから文字列を取りだします。
if($$cc_char_def == ""){
$$cc_char_def = "CC) " ; //default
}
//ccで取得した名前の前に挿入するキャラクタを抑制する
if(getinistr($$ini,$$Section,"cc_char_disable") == "1"){
$$cc_char_def = "" ;
}
##i = 0;
//to,cc のとき、前につける文字を定義する
//$$return_charが""のときは付加しない
if($$return_char != ""){
if(##cc_mode == 1){
$$char = $$cc_char_def ;
}
else{
$$char = $$to_char_def ;
}
}
else{
$$char = "" ;
}
//複数の敬称付き宛名挿入をする時に1行当たりに挿入する
//数を指定する。
##namecnt_p_line = getininum($$ini,$$Section,"namecnt_p_line") ;
if(##namecnt_p_line == 0) ##namecnt_p_line = 1 ;
while( ##i < ##cnt ) {
//##div_name optionが1のとき、空白より前だけを取得
$$s = $list[##i] ;
if(($list[##i] != "") && (##div_name == 1)){
//$list[##i]に半角空白" " があるか探す
##n = strstr($list[##i]," ");
//str1からstr2を検索し,見つかった場合はその位置を返します。
//先頭が0です。見つからなかった場合は-1を返します。 返す値は数値
型です。
if(##n != -1){
$$s = leftstr( $list[##i], ##n ) ;
}
}
//敬称情報の正規表現文字列を取得
$$reg_keisyou = getinistr($$ini,$$Section,"reg_keisyou");
// 敬称情報が$$wordで定義した文字列"not_apply"のとき)
if($list_keisyou[##i] == $$word){
$$wk = "" ;
}
//正規表現情報を取得した時、
else if($$reg_keisyou != ""){
freedll;
//hmjre.dllの機能を利用
call HmJre ;
//名前情報に定義された敬称を含むか含まないかを確認する。
//第1パラメータ(文字列型):検索したい正規表現文字列を指定します。
//第2パラメータ(文字列型):検索対象の文字列を指定します。
//第3パラメータ(数値型):検索を開始する桁位置を指定します。
// 先頭から検索したい場合は0を指定します。
//返り値(数値型): ヒットした場合は桁位置(0以上の値)を返します。
//ヒットしなかった場合は-1を返します。
//正規表現の解釈その他でエラーが起きた場合は-2を返します。
##n = dllfunc( "FindRegular",
$$reg_keisyou,
$$s, 0 );
//敬称文字列が一致。名前情報に登録された敬称が含まれる。
if (##n >= 0) {
$$wk = "" ;
}
//名前情報に登録された敬称が含まれない。
else{
$$wk = $list_keisyou[##i] ;
}
freedll;
call HidemaruMail ;
}
//正規表現情報を取得しなかった時 and
//名前情報の末尾が敬称情報と一致した時
else if(rightstr($$s,strlen($list_keisyou[##i])) == $list_keisyou[##
i]){
$$wk = "" ;
}
else $$wk = $list_keisyou[##i] ;
//区切り文字列を取得
$$divider = getinistr($$ini,$$Section,"divider");
if($$divider == "") $$divider = " " ;
//部署名情報の処理
if($list_part[##i] != ""){
$$part = $list_part[##i] + $$divider ;
}
else{
$$part = "" ;
}
//改行キャラクタ作成処理
if(##ins_ret_mode == 1){
if( (##i % ##namecnt_p_line) == 0){
$$return = $$return_char ;
}
else{
$$return = "" ;
}
}
else{
$$return = $$return_char ;
}
//文字列が存在するとき。
if($$str != ""){
$$str = $$str +
//char_def=複数の名前の場合間に挿入するキャラクタ。
getinistr($$ini,$$Section,"char_def") +
//複数の名前の間の改行。
//ins_ret_mode=0:改行なし
//ins_ret_mode=1:複数の名前の間に改行を挿入する
$$return +
//ccで取得した名前の前に挿入するキャラクタ
$$char +
//部署名
$$part +
//名前情報
$$s +
//敬称
$$wk ;
}
//文字列が無い最初のとき。
else{
if(##cc_mode == 1) $$char_1st = $$cc_char_def ;
else $$char_1st = $$to_char_def ;
$$str =
//to,ccで取得した名前の前に挿入するキャラクタ
$$char_1st +
//部署名
$$part +
//名前情報
$$s +
//敬称
$$wk ;
}
##i = ##i + 1;
}
return $$str ;
chg_to_name:
//処理:第一引数で指定された文字列の名前情報を変更する。
// 作成した情報は第二引数のheaderにsetする。
//引数渡し
//第一引数: 文字列型,処理を実施する文字列
$$To_inf = $$1;
//第ニ引数: 文字列型,処理後の情報をsetするheader
$$header = $$2;
//第三引数: 数値型,headerに敬称を付加するflag
##add_to_keisyou = ##3;
//第四引数: 数値型,Headerの名前の半角空白以降を削除するflag
##div_name_header = ##4 ;
//第五引数: 文字列型,登録している敬称すべてを正規表現で指定
$$reg_keisyou = $$5 ;
//第六引数: 文字列型,補足情報の後に挿入する文字列
$$divider = $$6 ;
if($$divider == "") $$divider = " " ;
if($$To_inf == ""){
message "サブルーチンchg_to_name 第一引数Error\n" + $info ;
}
if($$header == ""){
message "サブルーチンchg_to_name 第ニ引数Error\n" + $info ;
}
//区切り文字列を取得
$$divider = getinistr($$ini,$$Section,"divider");
if($$divider == "") $$divider = " " ;
//e-mailの個数を取得
##cnt_email = dllfunc("CountEmailList", $$To_inf);
$$str = "" ;
##i = 0 ;
//E-mail個数処理を繰り返す
while(##i < ##cnt_email){
//取得したHeaderから、指定した引数のE-mail情報を取得
$$wk = dllfuncstr("GetEmailList", $$To_inf, ##i);
//E-mailのみ取得する
$$email = dllfuncstr( "SetEmailOnly", $$wk );
//サブルーチンMake_nameで作成した名前を$$nameに代入
$$name = $list[##i] ;
//サブルーチンMake_nameで作成した補足情報を$$partに代入
if($list_part[##i] != ""){
$$part = $list_part[##i] + $$divider ;
}
else{
$$part = "" ;
}
//名前とEmailが同じときは、名前情報を付けないようにする
if($$name == $$email) {
$$name = "" ;
}
$$s = $$part + $$name ;
//名前 or 補足情報があるとき
if(($$s != "") || ($$part != "")){
//名前があるとき、e-mailに"<" ,">"をつける。
$$email = "<" + $$email + ">" ;
//敬称がすでに名前についている場合、付加しない
//正規表現で示した敬称情報を利用してチェックする。
if($$reg_keisyou != ""){
freedll;
//hmjre.dllの機能を利用
call HmJre ;
//第1パラメータ(文字列型):検索したい正規表現文字列を指定しま
す。
//第2パラメータ(文字列型):検索対象の文字列を指定します。
//第3パラメータ(数値型):検索を開始する桁位置を指定します。
// 先頭から検索したい場合は0を指定します。
//返り値(数値型): ヒットした場合は桁位置(0以上の値)を返します。
//ヒットしなかった場合は-1を返します。
//正規表現の解釈その他でエラーが起きた場合は-2を返します。
##n = dllfunc( "FindRegular",
$$reg_keisyou,
$$s, 0 );
//敬称文字列が一致
if (##n >= 0) {
$$wk = "" ;
}
else{
$$wk = $list_keisyou[##i] ;
}
freedll;
call HidemaruMail ;
}
//通常の文字列一致処理でチェックする。(登録済み敬称が存在する場合)
else if(rightstr($$s,strlen($list_keisyou[##i])) == $list_keisyo
u[##i]){
$$wk = "" ;
}
//登録済み敬称が存在しない場合
else $$wk = $list_keisyou[##i] ;
//ダブルクォーテーションで括られているかどうかチェックする。
if( (leftstr($$s,1) == "\"") &&
(rightstr($$s,1) == "\"")){
##double = 1 ;
$$s = dllfuncstr("UnDoubleQuote", $$s ) ;
}
else ##double = 0 ;
//##div_name_header optionが1のとき、空白より前だけを取得
if(##div_name_header == 1){
//$list[##i]に半角空白" " があるか探す
##n = strstr($$s," ");
//空白を含むとき
if(##n != -1){
$$s = leftstr( $$s, ##n ) ;
}
}
if(##add_to_keisyou){
//敬称がすでに名前についている場合、付加しない
//正規表現で示した敬称情報を利用してチェックする。
if($$reg_keisyou != ""){
freedll;
//hmjre.dllの機能を利用
call HmJre ;
//第1パラメータ(文字列型):検索したい正規表現文字列を指定
します。
//第2パラメータ(文字列型):検索対象の文字列を指定します。
//第3パラメータ(数値型):検索を開始する桁位置を指定します。
// 先頭から検索したい場合は0を指定します。
//返り値(数値型): ヒットした場合は桁位置(0以上の値)を返
します。
//ヒットしなかった場合は-1を返します。
//正規表現の解釈その他でエラーが起きた場合は-2を返します。
##n = dllfunc( "FindRegular",
$$reg_keisyou,
$$s, 0 );
//敬称文字列が一致
if (##n >= 0) {
$$wk = "" ;
}
else{
$$wk = $list_keisyou[##i] ;
}
freedll;
call HidemaruMail ;
}
//通常の文字列一致処理でチェックする。(登録済み敬称が存在す
る場合)
else if(rightstr($$s,strlen($list_keisyou[##i])) == $list_ke
isyou[##i]){
$$wk = "" ;
}
//登録済み敬称が存在しない場合
else $$wk = $list_keisyou[##i] ;
//ダブルクォーテーションで括られている場合
if( ##double == 1){
$$s = "\"" + $$s + $$wk + "\"" ;
}
else $$s = $$s + $$wk ;
}
call Add_double $$s ;
$$s = $$return;
}
$$wk = $$s + " " + $$email ;
//挿入する文字列を作成
if($$str == ""){
$$str = $$wk ;
}
else{
$$str = $$str + ", " + $$wk ;
}
##i = ##i + 1 ;
}
//現在のHeaderを削除する。
##Header_count = dllfunc("CountCurrentHeader", $$header);
##i = 0 ;
while( ##i < ##Header_count ) {
##n = dllfunc( "DeleteHeader2", $$header, ##i );
##i = ##i + 1;
}
//作成された文字列をHeaderにsetする
if($$str != ""){
##n = dllfunc( "SetHeader", $$header, $$str );
}
return ;
del_to_name:
//処理:第一引数で指定された文字列に禁止文字がないか確認。あった場合全角に置換。
//引数渡し
//第一引数: 文字列型,チェックを行う文字列
$$To_inf = $$1;
$$header = $$2;
if($$To_inf == ""){
message "サブルーチンdel_to_name 第一引数Error\n" + $info ;
}
if($$header == ""){
message "サブルーチンdel_to_name 第ニ引数Error\n" + $info ;
}
//e-mailの個数を取得
##cnt_email = dllfunc("CountEmailList", $$To_inf);
$$str = "" ;
##i = 0 ;
//E-mail個数処理を繰り返す
while(##i < ##cnt_email){
//取得したHeaderから、指定した引数のE-mail情報を取得
$$wk = dllfuncstr("GetEmailList", $$To_inf, ##i);
//E-mailのみ取得する
$$wk = dllfuncstr( "SetEmailOnly", $$wk );
//挿入する文字列を作成
if($$str == ""){
$$str = $$wk ;
}
else{
$$str = $$str + ", " + $$wk ;
}
##i = ##i + 1 ;
}
//現在のHeaderを削除する。
##Header_count = dllfunc("CountCurrentHeader", $$header);
##i = 0 ;
while( ##i < ##Header_count ) {
##n = dllfunc( "DeleteHeader2", $$header, ##i );
##i = ##i + 1;
}
//作成された文字列をHeaderにsetする
if($$str != ""){
##n = dllfunc( "SetHeader", $$header, $$str );
}
return ;
Add_double:
//処理:第一引数で指定された文字列に対象文字がある場合、ダブルクォーテーショ
ンで括る。
//引数渡し
//第一引数: 文字列型,チェックを行う文字列
$$str = $$1;
if($$str == ""){
message "サブルーチンAdd_double 第一引数Error\n" + $info ;
goto LEND ;
}
$$Err_char = "<>[]()" ;
##loop = strlen($$Err_char) ;
//ダブルクォーテーションで括られていない場合
if( (leftstr($$str,1) != "\"") &&
(rightstr($$str,1) != "\"")){
##i = 0 ;
while(##i < ##loop){
$$char = midstr($$Err_char,##i,1) ;
while(strstr($$str,$$char) != -1){
$$str = "\"" + $$str + "\"" ;
##flag = 1 ;
break;
}
if(##flag) break;
##i = ##i + 1 ;
}
}
return $$str ;
add_to_keisyou:
//処理:第一引数で指定された文字列の名前情報を変更する。
// 作成した情報は第二引数のheaderにsetする。
//引数渡し
//第一引数: 文字列型,処理を実施する文字列
$$To_inf = $$1;
//第ニ引数: 文字列型,処理後の情報をsetするheader
$$header = $$2;
//第三引数: 文字列型,登録している敬称すべてを正規表現で指定
$$reg_keisyou = $$3 ;
if($$To_inf == ""){
message "サブルーチンadd_to_keisyou 第一引数Error\n" + $info ;
}
if($$header == ""){
message "サブルーチンadd_to_keisyou 第ニ引数Error\n" + $info ;
}
//e-mailの個数を取得
##cnt_email = dllfunc("CountEmailList", $$To_inf);
$$str = "" ;
##i = 0 ;
//E-mail個数処理を繰り返す
while(##i < ##cnt_email){
//取得したHeaderから、指定した引数のE-mail情報を取得
$$wk = dllfuncstr("GetEmailList", $$To_inf, ##i);
//E-mailのみ取得する
$$email = dllfuncstr( "SetEmailOnly", $$wk );
//パラメータで渡された「名前+Email」の形式の文字列から、名前部分のみ
を取り出して返します。
//名前情報は、Headerの名前を使用する。
$$name = dllfuncstr( "SetNameOnly", $$wk );
//名前とEmailが同じときは、名前情報を付けないようにする
if($$name == $$email) {
$$name = "" ;
}
if($$name != "") {
//名前があるとき、e-mailに"<" ,">"をつける。
$$email = "<" + $$email + ">" ;
//敬称がすでに名前についている場合、付加しない
//正規表現で示した敬称情報を利用してチェックする。
if($$reg_keisyou != ""){
freedll;
//hmjre.dllの機能を利用
call HmJre ;
//第1パラメータ(文字列型):検索したい正規表現文字列を指定しま
す。
//第2パラメータ(文字列型):検索対象の文字列を指定します。
//第3パラメータ(数値型):検索を開始する桁位置を指定します。
// 先頭から検索したい場合は0を指定します。
//返り値(数値型): ヒットした場合は桁位置(0以上の値)を返します。
//ヒットしなかった場合は-1を返します。
//正規表現の解釈その他でエラーが起きた場合は-2を返します。
##n = dllfunc( "FindRegular",
$$reg_keisyou,
$$name, 0 );
//敬称文字列が一致
if (##n >= 0) {
$$wk = "" ;
}
else{
$$wk = $list_keisyou[##i] ;
}
freedll;
call HidemaruMail ;
}
//通常の文字列一致処理でチェックする。(登録済み敬称が存在する場合)
else if(rightstr($$name,strlen($list_keisyou[##i])) == $list_kei
syou[##i]){
$$wk = "" ;
}
//登録済み敬称が存在しない場合
else $$wk = $list_keisyou[##i] ;
//ダブルクォーテーションで括られているかどうかチェックする。
if( (leftstr($$name,1) == "\"") &&
(rightstr($$name,1) == "\"")){
$$name = "\"" + dllfuncstr("UnDoubleQuote", $$name ) + $$wk
+ "\"" ;
}
else {
$$name = $$name + $$wk ;
}
call Add_double $$name ;
$$name = $$return;
}
$$wk = $$name + " " + $$email ;
//挿入する文字列を作成
if($$str == ""){
$$str = $$wk ;
}
else{
$$str = $$str + ", " + $$wk ;
}
##i = ##i + 1 ;
}
//現在のHeaderを削除する。
##Header_count = dllfunc("CountCurrentHeader", $$header);
##i = 0 ;
while( ##i < ##Header_count ) {
##n = dllfunc( "DeleteHeader2", $$header, ##i );
##i = ##i + 1;
}
//作成された文字列をHeaderにsetする
if($$str != ""){
##n = dllfunc( "SetHeader", $$header, $$str );
}
return ;
Res_check:
//処理:処理の判定&メッセージ表示
//引数渡し
##num = ##1; $$mes = $$2 ;
if(##num != 1){
message $$mes ;
goto LEND;
}
return ;
Str_check:
//処理:文字列の判定&メッセージ表示
//引数渡し
$$str = $$1; $$mes = $$2 ;
if($$str == ""){
message $$mes ;
goto LEND;
}
return ;
Trim:
//機能: 前後の空白を削除する
//第一引数: 文字列型,処理対象文字列
//戻り値: 文字列型,処理後文字列
//引数渡し
$$str = $$1;
//空白を削除 trim
//右の空白を削除
while(1){
if(rightstr($$str,1) == " ") $$str = leftstr($$str,strlen($$str) -1);
else break ;
}
//左の空白を削除
while(1){
if(leftstr($$str,1) == " ") $$str = rightstr($$str,strlen($$str) -1);
else break ;
}
return $$str ;
Trim_L:
//機能: 前の空白を削除する
//第一引数: 文字列型,処理対象文字列
//戻り値: 文字列型,処理後文字列
//引数渡し
$$str = $$1;
while(1){
if(leftstr($$str,1) == " ") $$str = rightstr($$str,strlen($$str) -1);
else break ;
}
return $$str ;
Trim_R:
//機能: 後の空白を削除する
//第一引数: 文字列型,処理対象文字列
//戻り値: 文字列型,処理後文字列
//引数渡し
$$str = $$1;
//右の空白を削除
while(1){
if(rightstr($$str,1) == " ") $$str = leftstr($$str,strlen($$str) -1);
else break ;
}
return $$str ;
HmJre:
// HmJre.DLLのロード
loaddll "HmJre.dll" ;
if(!result ){
message "HmJre.dllのロードに失敗しました。";
goto LEND;
}
//HmJre.dllの版数を取得。
##ver = (((dllfunc("JreGetVersion") & 0xFF00) / 256) * 100) +
((dllfunc("JreGetVersion") & 0xF0) / 16 * 10) +
(dllfunc("JreGetVersion") & 0xF) ;
if (##ver < 150) {
$$mes = "HmJre.DLLの版数が Ver1.50より古いです\n" +
"現在のHmJre.DLL版数=" +
leftstr(str(##ver),1) + "." +
midstr(str(##ver),1,1) + "." +
midstr(str(##ver),2,1) + "\n" +
$info ;
##ret = 0 ;
}
else
##ret = 1 ;
return ##ret ;
reg_escape:
//機能: 正規表現の特定文字をエスケープ処理を実施する。
//第一引数: 文字列型,処理対象文字列
//第二引数: 数値型,田楽Dllを使用するかしないかを指定する。1=使用する。0=
使用しない。
//戻り値: 文字列型,処理後文字列
$$s = $$1 ;
##dengaku = ##2 ;
$$str[##i] = "\\" ; ##i = ##i + 1 ;
$$str[##i] = "." ; ##i = ##i + 1 ;
$$str[##i] = "*" ; ##i = ##i + 1 ;
$$str[##i] = "+" ; ##i = ##i + 1 ;
$$str[##i] = "?" ; ##i = ##i + 1 ;
$$str[##i] = "^" ; ##i = ##i + 1 ;
$$str[##i] = "$" ; ##i = ##i + 1 ;
$$str[##i] = "[" ; ##i = ##i + 1 ;
$$str[##i] = "]" ; ##i = ##i + 1 ;
$$str[##i] = "(" ; ##i = ##i + 1 ;
$$str[##i] = ")" ; ##i = ##i + 1 ;
$$str[##i] = "|" ; ##i = ##i + 1 ;
##cnt = 0;
while( ##cnt < ##i ) {
if(##dengaku == 1){
//loaddllされている場合、ロードされているDLLのファイル名を返しま
す。
//田楽dllの機能を利用
//GSUB
//使い方:$s = dllfuncstr("GSUB",$s1,$s2,$s3,#n4);
//説明:文字列中の部分文字列を別の文字列に置換します。
//引数:
// $s1:置換対象文字列
// $s2:検索文字列
// $s3:置換文字列
// #n4:最初から何個の文字列を置換するか
// (-1 を指定すると見つかったものを全て置換します)
//返り値:置換された結果の文字列が返ります。
$$s = dllfuncstr("GSUB",$$s,$$str[##cnt],"\\" + $$str[##cnt],-1);
}
else{
$$wk = $$s ;
$$s = "" ;
while(1){
##n = strstr($$wk,$$str[##cnt]);
if(##n != -1){
$$s = $$s + leftstr($$wk,##n) + "\\" + $$str[##cnt] ;
$$wk = midstr($$wk,##n+1,strlen($$wk) - ##n -1) ;
}
else {
$$s = $$s + $$wk ;
break ;
}
}
}
##cnt = ##cnt + 1;
}
return $$s ;
Dengaku:
// 田楽DLLのロード
if(existfile(hidemarudir+"\\DengakuDLL.dll"))loaddll hidemarudir+"\\Deng
akuDLL.dll";
else {
$$mes = "田楽DLLが見つかりませんでした。\n" +
"田楽DLLを秀丸エディタインストールディレクトリにおいてくださ
い。\n" +
" 秀丸エディタインストールディレクトリ:\n\t"+hidemarudir +
"\n\n" +
"田楽DLL ダウンロードURL\n"+
" http://www.ceres.dti.ne.jp/~sugiura/hidemaru/macros/dgserver/
\n" +
$info ;
message $$mes ;
goto LEND ;
}
if (!result) {
message "田楽DLL をロードできませんでした。"+$info;
goto LEND ;
}
return;
Gsub:
//機能: "\"を第二引数で指定した文字に置換する
//第一引数: 文字列型,処理対象文字列
//第ニ引数: 文字列型,置換文字列
//第三引数: 文字列型,第二引数で指定した文字列を置き換える文字列
//戻り値: 文字列型,処理後文字列
$$target = $$1 ;
$$reg_str = $$2 ;
$$gsub = $$3 ;
if($$target == ""){
message "サブルーチンGsub:第一引数エラー。\n" + $info ;
goto LEND ;
}
if($$reg_str == ""){
message "サブルーチンGsub:第ニ引数エラー。\n" + $info ;
goto LEND ;
}
//loaddllされている場合、ロードされているDLLのファイル名を返します。
//ロードされていない場合は何もない文字列を返します。
$$dllfile = loaddllfile ;
if($$dllfile != "") freedll;
//hmjre.dllの機能を利用
call HmJre ;
//FindRegular(V1.50以降から)
//特定の文字列から特定の正規表現パターンのマッチングをして、ヒットした場
合は
//その位置を返します。
//第1パラメータ(文字列型): 検索したい正規表現文字列を指定します。
//第2パラメータ(文字列型): 検索対象の文字列を指定します。
//第3パラメータ(数値型): 検索を開始する桁位置を指定します。
//先頭から検索したい場合は0を指定します。
//返り値(数値型): ヒットした場合は桁位置(0以上の値)を返します。
//ヒットしなかった場合は-1を返します。
//正規表現の解釈その他でエラーが起きた場合は-2を返します。
##n = dllfunc( "FindRegular",
$$reg_str,
$$target, 0 );
//検索文字列が一致
if (##n > 0) {
while( ##n > 0 ) {
$$target =
leftstr( $$target, ##n ) +
$$gsub +
midstr( $$target, ##n +1, strlen($$target) - ##n - 1 ) ;
##n = dllfunc( "FindRegular",
$$reg_str,
$$target, 0 );
}
}
else if(##n == -2){
message "正規表現の解釈その他でエラーが発生" ;
}
if($$dllfile != ""){
loaddll $$dllfile ;
if(!result ){
message $$dllfile + "\nのロードに失敗しました。" + $info ;
goto LEND ;
}
}
return $$target ;
HmJre:
// HmJre.DLLのロード
loaddll "HmJre.dll" ;
if(!result ){
message "HmJre.dllのロードに失敗しました。";
goto LEND;
}
//HmJre.dllの版数を取得。
##ver = (((dllfunc("JreGetVersion") & 0xFF00) / 256) * 100) +
((dllfunc("JreGetVersion") & 0xF0) / 16 * 10) +
(dllfunc("JreGetVersion") & 0xF) ;
if (##ver < 150) {
$$mes = "HmJre.DLLの版数が Ver1.50より古いです\n" +
"現在のHmJre.DLL版数=" +
leftstr(str(##ver),1) + "." +
midstr(str(##ver),1,1) + "." +
midstr(str(##ver),2,1) + "\n" +
$info ;
##ret = 0 ;
}
else
##ret = 1 ;
return ##ret ;
findbooknote:
//機能: アドレス帳から第一引数のアドレス情報の備考情報を取得する。
// 備考〜備考8の取得先は、第二引数の数値情報を利用する。
//第一引数: 文字列型,処理対象文字列
//第ニ引数: 数値型,備考取得情報
//戻り値: 文字列型,処理後文字列
$$inf = $$1 ;
##bikou = ##2 ;
if($$inf == ""){
message "サブルーチンfindbooknote:第一引数エラー。\n" + $info ;
goto LEND ;
}
if( (##bikou <1) ||
(8 < ##bikou)){
message "サブルーチンfindbooknote:第二引数エラー。\n" +
str(##bikou) + "\n" + $info ;
goto LEND ;
}
if(##bikou == 1){
//備考の内容を返します。
$$ret = dllfuncstr( "FindBookNote", $$inf);
}
else if(##bikou == 2){
//備考2の内容を返します。
$$ret = dllfuncstr( "FindBookNote2", $$inf);
}
else if(##bikou == 3){
//備考3の内容を返します。
$$ret = dllfuncstr( "FindBookNote3", $$inf);
}
else if(##bikou == 4){
//備考4の内容を返します。
$$ret = dllfuncstr( "FindBookNote4", $$inf);
}
else if(##bikou == 5){
//備考5の内容を返します。
$$ret = dllfuncstr( "FindBookNote5", $$inf);
}
else if(##bikou == 6){
//備考6の内容を返します。
$$ret = dllfuncstr( "FindBookNote6", $$inf);
}
else if(##bikou == 7){
//備考7の内容を返します。
$$ret = dllfuncstr( "FindBookNote7", $$inf);
}
else if(##bikou == 8){
//備考8の内容を返します。
$$ret = dllfuncstr( "FindBookNote8", $$inf);
}
return $$ret ;
//------------HMML_INS_NAME.MAC-------------
|
|