tkinfo.dllとbody="" bodyfile="xxx" の件No.08792
styth さん 21/11/04 08:34
 
 スレッドを改めました。
https://www.maruo.co.jp/hidesoft/8/x08640_.html#8787

 教えて頂いたマクロ、
//現在編集中の内容を秀丸メールの情報アイテム化するマクロ(秀丸エディタ用)を、

 自分で直して、メールにするか情報アイテムにするかでをマクロの中で問い合
わせが出来るようにしました。
 この時、

loaddll "C:\\Program Files (x86)\\HidemaruMail\\tkinfo.dll";

 これを使うと、情報アイテムで指定したフォルダのテンプレートが効かなくなるよ
うです。

 "folder=\"自分のアカウント\\User\\あああ\"" のテンプレートは、

$(NoWarningHeaderUpdate)$-
$(DeleteHeader,From)$-
$(SetHeader,To,"@.item")$-
$(SetInfoItemFolder,"","User\\あああ",1)$-
$(SwitchOrikaeshi)$-

 で、
1)Fromが消えない。
2)情報アイテムを保存しようとする時に、保存先を訊いてくる

 という現象です。

https://www.maruo.co.jp/hidesoft/8/x08640_.html?a=9#8785
>(2)
>$to = "@.item";
> この時は、
>body=""
> を記述しない。
>("@.item"を保存するフォルダでの、テンプレート指定アリ)

 と報告させて頂きましたが、

loaddll "C:\\Program Files (x86)\\HidemaruMail\\tkinfo.dll";
 があるときは、

body="" bodyfile="xxx"

 ではなく、単に

bodyfile="xxx"

 としないと、うまくいきません。

 以下のマクロで、クリップボードを使って、テストしました。
 直したのは、提示して頂いたもので、以下の2点だけです。(コメントは無視
してください。)
1)loaddll "C:\\Program Files (x86)\\HidemaruMail\\tkinfo.dll"; 追加
2)"folder=\"自分のアカウント\\User\\あああ\"" +         //書き換え

"body=\"\" " +                                        //(あ)
 この行をコメントすると、テンプレート通りの動きをします。


 もし、再現できたとしたら、仕様変更になるんでしょか?
 今までは、反対派でしたが、

body="" bodyfile="xxx"
 としても、テンプレートが有効になるようにして頂きたいのですが。




//現在編集中の内容を秀丸メールの情報アイテム化するマクロ(秀丸エディタ用)

    $subject = basename;
    if( selecting ) {
        $select = gettext( seltopx, seltopy, selendx, selendy, 1);
        loaddll "hmjre.dll";
        $select = dllfuncstr("ReplaceRegular", "[\\r\\n\\t]+", $select, 0, "
 ", 2);
        $select = dllfuncstr("ReplaceRegular", " {2,}", $select, 0, " ", 2);
        $select = dllfuncstr("ReplaceRegular", " +$", $select, 0, "", 2);
        if(strlen( $select ) >= 150 ) {
            $select = leftstr( $select, 150 );
        }
        $subject = $select;
//        $subject = basename + " " + $subject;

    }
    $filename = "\"" + filename + "\"";
    if( updated || basename == "" ) {
        //クリップボードを使う
        disabledraw;
        #x = x; #y = y;
        gofiletop;
        beginsel;
        gofileend;
        copy;
        moveto #x, #y;
        enabledraw;
        $filename = "clipboard";
    }
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    $exe = getregstr("TuruKameDir");
    closereg;
    if( $exe == "" ) {
        message "秀丸メールのインストール先が不明です。";
        endmacro;
    }
    $exe = $exe + "TuruKame.exe";
    if( ! existfile( $exe ) ) {
        message "秀丸メールのプログラム用ファイルがありません。パス = " + $exe;
        endmacro;
    }
    call ConvertTuruKameParam $subject; $subject = $$return;

        loaddll "C:\\Program Files (x86)\\HidemaruMail\\tkinfo.dll";
//      #ans = dllfunc("Bypass_MessageBox",             //
//                      hidemaruhandle(0),
//                      "メール作成ですか? Subject= " + $subject + "\n\n" +
//                      " ・N= @item\n" +
//                      " ・esc=  終了",
//                      "メール or @item" ,      //
//                      0x10023);
//      YNの処理
//       ・
//       ・
//       ・

        freedll;


    $command = "\"" + $exe + "\" newmail " +
//            "folder=\"斉藤秀夫メイン\\User\\hidenet\"" +        //ここは各
自で書き換え必要。
            "folder=\"自分のアカウント\\User\\あああ\"" +         //ここは各
自で書き換え必要。
            "subject=\"" + $subject + "\" " +
            "body=\"\" " +                                        //(あ)
            "bodyfile=" + $filename + " to=@.item";
    run $command;
    endmacro;
   
ConvertTuruKameParam:
    if( strstr( $$1, "\"" ) < 0 && strstr( $$1, "%" ) < 0 ) {
        return $$1;
    }
    ##i = 0;
    ##len = wcslen($$1);
    while( ##i < ##len ) {
        $$c = wcsmidstr( $$1, ##i, 1 );
        if( $$c == "\""
         || $$c == "%" ) {
            $$1 = wcsmidstr( $$1, 0, ##i ) + "%" + hex(ascii($$c)) + wcsmids
tr( $$1, ##i + 1 );
            ##i = ##i + 3;
            ##len = ##len + 2;
        } else {
            ##i = ##i + 1;
        }
    }
    return "\x01" + $$1;

endmacro;

[ ]
RE:08792 tkinfo.dllとbody="" bodyfile="No.08794
秀まるお2 さん 21/11/04 09:23
 
 動作確認はしてませんが、とりあえずおかしい点として、

   body=""

 のような指定をした段階でテンプレートは無視されます。

 body=の指定の代わりに「template="テスト"」みたいに指定すれば、とりあえず指
定したテンプレートは効くと思います。それでテストしてみたらどうでしょうか。

[ ]
RE:08794 tkinfo.dllとbody="" bodyfile="No.08796
styth さん 21/11/05 00:24
 
> 動作確認はしてませんが、とりあえずおかしい点として、
>   body=""
> のような指定をした段階でテンプレートは無視されます。
 この辺の仕様をどこかに書いておいて頂ければ、と思います。(自分では予想もし
ませんでしたが)

> body=の指定の代わりに「template="テスト"」みたいに指定すれば、とりあえず
>指定したテンプレートは効くと思います。それでテストしてみたらどうでしょうか。

>"body=\"\" " +                                        //(あ)
> この行をコメントすると、テンプレート通りの動きをします。
 と申し上げましたが、body=""の指定しなければ、確かにそうなります。

 ただ、
https://www.maruo.co.jp/hidesoft/8/x08640_.html#8786
> あと、body=""を指定しないと空行が出てきてしまうのは、すみませんがたぶんバ
>グだと思います。これは修正させていただきます。
 及び、
https://www.maruo.co.jp/hidesoft/8/x08640_.html#8787
> もっと調べてみたら、Folder=XXXXがあるとそれによってテンプレートも指定した
>ことになりまして、それにプラスしてBodyFileを指定した形だと、追加扱いになる
>ようでした。
> なので、やはり現状の仕様そのままにしつつ、ヘルプの方に、
>    body="" bodyfile="..."
> のように指定することで既存の本文を置き換える指定になって風に記述させてい
>ただきます。

 とのことだったので、body=""を指定しました。

 ヘルプにも、
>メール本文の置き換え指定
> Template=、Body=、Folder=の指定をすると、それによって何らかのメール本文が
>指定されたことになります。その後にBodyFile=を指定すると、既存のメール本文に
>対してBodyFile=の内容が追加されるようになります。追加ではなくて置き換えとし
>たい場合には、
>body="" bodyfile="c:\\temp\\temp.txt"
> のように、「body=""」を指定してからbodyfileを指定してください。
 との説明があったので、とりあえず、
body="" bodyfile="xxx"
 とすれば、良いと解釈していました。

1)body
2)bodyfile
3)Folder
4)テンプレート(情報アイテムで指定したフォルダのテンプレート)
5)template
 これらの関係がどうなっているのか、教えて頂けると幸いです。


body=""
> これを使うと、情報アイテムで指定したフォルダのテンプレートが効かなくなる
>ようです。
 ということは、おおよそ、分かりました。

[ ]
RE:08796 tkinfo.dllとbody="" bodyfile="No.08797
秀まるお2 さん 21/11/05 08:26
 
 一応、この前アップロードしたβ版にそれらしき文面は書いたつもりなんですけど
も、もうちょっと文面を追加してみます。

[ ]