メール印刷の表示についてNo.41738
kani さん 11/10/25 15:41
 
秀丸パブリッシャで
filename
をBOXで印刷すると、
Subject / From - Date
が1行で印刷されますが、
Subject
From - Date
と2行で印刷することはできないでしょうか?

また、Dateが
11/10/25
のように、2011ではなく、11と表示されてしまいます。
2011/10/25
と表示させることはできないでしょうか?
よろしくお願いします。

希望の形は以下のようなものです。
仕切り線はBOXの高さを最小にして枠を表示させたらOKでした。

Subject
From - Date
-----------------------------------------------------
本文

[ ]
RE:41738 メール印刷の表示についてNo.41739
秀まるお2 さん 11/10/25 16:20
 
 秀丸パブリッシャーと秀丸メールを組み合わせて印刷する時のboxの指定につ
いてですが、現状では、その「filename」を使った場合の表示スタイルを、もっ
と細かく指定するってことは出来ないです。

 「Subject / From - Date」のような固定フォーマットで、年号も2桁とか、
けっこう簡単な仕組みになってます。幅が狭いと日付が出なかったりすることも
あります。

 現状でなんとかもっと好きなフォーマットで印刷するとしたら、秀丸パブリッ
シャーでのBOXを使うやり方はあきらめて、代わりに、マクロを使ってヘッダを
好きなように書き換えて、それで印刷させるやり方しか無いです。

 実はつい最近、ここの会議室で似たような話(印刷の時のDate:ヘッダを日本
語で印刷したい)って話があって、それ用のマクロを書き込んだ所でした。

    http://www.maruo.co.jp/hidesoft/8/x41597_.html#41597

 そういう感じでヘッダを好きなように加工して印刷するってやり方なら出来ま
すが、それでどうでしょうか。

 例えばその、

 Subject:
 From:
 Date:

 の3つのヘッダだけ表示させて印刷させるようなマクロのサンプルを作って掲
載させていただくことは可能ですけども…。

 ただ、

> 仕切り線はBOXの高さを最小にして枠を表示させたらOKでした。

 ヘッダと本文の区切りの所の、普通空行になってる部分を、空行じゃなくて、
「---------」のように表示させるのは、ちょっと無理があります。

 それ以外の、ヘッダを3つだけ表示させてってことならマクロで出来ます。

[ ]
RE:41739 メール印刷の表示についてNo.41741
秀まるお2 さん 11/10/25 18:19
 
 すみません。先ほどのマクロはバグがありました。

 バグ修正して、さらにもうちょっと改良しました。

 このマクロでどうでしょ?

 この内容のマクロファイル(例えばprint.macとかの名前のファイル)を作成
して、「マクロ・マクロ実行...」から「参照」ボタンを押して選択して実行し
てみて欲しいです。


    #x = x;
    #y = y;
    #readonly = readonly;
    if( #readonly ) readonlyswitch;
    #browsemode = browsemode;
    if( #browsemode ) browsemodeswitch;

    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    $headerrecv =  getregstr("SmallHdrRecv_Backup$$$");
    if( $headerrecv == "" ) {
        $headerrecv =  getregstr("SmallHdrRecv");
    }
    $headersend =  getregstr("SmallHdrSend_Backup$$$");
    if( $headersend == "" ) {
        $headersend =  getregstr("SmallHdrSend");
    }

    $printheader = "Subject:\x01\x02From:\x01\x02Date:\x01\x02";

    writeregstr "SmallHdrRecv", $printheader;
    writeregstr "SmallHdrSend", $printheader;
    writeregstr "SmallHdrRecv_backup$$$", $headerrecv;
    writeregstr "SmallHdrSend_backup$$$", $headersend;
    closereg;

    loaddll "tkinfo.dll";
    #n = dllfunc("ExecAtMain", "EnvChangedDanger");

    #headerview = dllfunc("HeaderView");
    if( #headerview != 1 ) {
        #n = dllfunc("SwitchHeaderView", 1);
    }


    if( dllfunc("IsHidemaruMailMain") ) {
        #n = dllfunc("EnterPrintMulti");
    } else {
        if( #headerview == 1 ) {
            #n = dllfunc("SwitchHeaderView", 0);
            #n = dllfunc("SwitchHeaderView", 1);
        }
    }

    #readonly = readonly;
    if( #readonly ) readonlyswitch;
    #browsemode = browsemode;
    if( #browsemode ) browsemodeswitch;

    begingroupundo;
    moveto 0, -9999;
    while(1) {
        searchdown "^Date:     [^ ]", regular, casesense;
        if( !result ) {
            break;
        }
        if( (colorcode & 0x1F) != 3 ) {
            continue;
        }
        $date = gettext( 10, y, 256, y );
        $date = dllfuncstr("FormatDate", $date, "YYYY/MM/DD(W曜日) hh:mm:ss");
        moveto 10, y;
        beginsel;
        golineend2;
        delete;
        insert $date;
    }
    endgroupundo;
    print 1;
    undo;
    if( #readonly ) readonlyswitch;
    if( #browsemode ) browsemodeswitch;
    loaddll "tkinfo.dll";
    if( dllfunc("IsHidemaruMailMain") ) {
        #tmp = dllfunc("LeavePrintMulti");
    }

    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    writeregstr "SmallHdrRecv", $headerrecv;
    writeregstr "SmallHdrSend", $headersend;
    writeregstr "SmallHdrRecv_backup$$$", "";
    writeregstr "SmallHdrSend_backup$$$", "";
    closereg;

    #shellobj = createobject("WScript.Shell");
    if(#shellobj != 0){
        callmethod #shellobj, "RegDelete"
            , "HKCU\\Software\\Hidemaruo\\TuruKame\\Config\\SmallHdrRecv_bac
kup$$$";
        callmethod #shellobj, "RegDelete"
            , "HKCU\\Software\\Hidemaruo\\TuruKame\\Config\\SmallHdrSend_bac
kup$$$";
        releaseobject #shellobj;
    }


    loaddll "tkinfo.dll";
    #n = dllfunc("ExecAtMain", "EnvChangedDanger");

    if( #headerview == 1 ) {
        #n = dllfunc("SwitchHeaderView", 0);
    }
    #n = dllfunc("SwitchHeaderView", #headerview);

    moveto #x, #y;

[ ]
RE:41741 メール印刷の表示についてNo.41744
kani さん 11/10/26 12:01
 
> すみません。先ほどのマクロはバグがありました。
> バグ修正して、さらにもうちょっと改良しました。
> このマクロでどうでしょ?

ご連絡ありがとうございます。
そうですか、マクロじゃないとダメですか。
To:とか、Cc:を全部出したり出さなかったりするのも、個別のマクロを
作らないとダメですよね。

マクロはちゃんと動きました。
ありがとうございます。
マクロの内容を全部把握していないのですが、レジストリも使用しているのですね。
なかなか編集して利用するのはハードルが高いです...
(Dateの日本語化のためだけでしょうか?)

単に、ヘッダ内容選択だけなら、もっと簡単に出来ますか?
現在は
Subject
From
Date
ですが、これに加えて、
To:とCc:
も追加するのも欲しいです。
(なしのものと両方使いたい)

お手数ですが、よろしくお願いします。

[ ]
RE:41744 メール印刷の表示についてNo.41746
秀まるお2 さん 11/10/26 16:48
 
 ヘッダの指定については、

    $printheader = "Subject:\x01\x02From:\x01\x02Date:\x01\x02";

 の所をいじればいいです。ヘッダをコロン付きで指定して「\x01\x02」を付け
て羅列すればいいです。

 To: Cc:も付ける

    $printheader =
       "Subject:\x01\x02From:\x01\x02Date:\x01\x02To:\x01\x02Cc:\x01\x02";

 みたいな具合になります。

 マクロの全体も念のため掲載します。

 それと、このマクロにはDate:ヘッダを日本語表記にする処理が入ってますが、
それを省略するとかなりコンパクトになります。

 将来的にはもっと汎用的にして(例えばヘッダをもっと細かくカスタマイズ出
来るようにして)うちのライブラリにアップロードしようと思います。

    #x = x;
    #y = y;
    #readonly = readonly;
    if( #readonly ) readonlyswitch;
    #browsemode = browsemode;
    if( #browsemode ) browsemodeswitch;

    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    $headerrecv =  getregstr("SmallHdrRecv_Backup$$$");
    if( $headerrecv == "" ) {
        $headerrecv =  getregstr("SmallHdrRecv");
    }
    $headersend =  getregstr("SmallHdrSend_Backup$$$");
    if( $headersend == "" ) {
        $headersend =  getregstr("SmallHdrSend");
    }

    $printheader =
       "Subject:\x01\x02From:\x01\x02Date:\x01\x02To:\x01\x02Cc:\x01\x02";

    writeregstr "SmallHdrRecv", $printheader;
    writeregstr "SmallHdrSend", $printheader;
    writeregstr "SmallHdrRecv_backup$$$", $headerrecv;
    writeregstr "SmallHdrSend_backup$$$", $headersend;
    closereg;

    loaddll "tkinfo.dll";
    #n = dllfunc("ExecAtMain", "EnvChangedDanger");

    #headerview = dllfunc("HeaderView");
    if( #headerview != 1 ) {
        #n = dllfunc("SwitchHeaderView", 1);
    }


    if( dllfunc("IsHidemaruMailMain") ) {
        #n = dllfunc("EnterPrintMulti");
    } else {
        if( #headerview == 1 ) {
            #n = dllfunc("SwitchHeaderView", 0);
            #n = dllfunc("SwitchHeaderView", 1);
        }
    }

    #readonly = readonly;
    if( #readonly ) readonlyswitch;
    #browsemode = browsemode;
    if( #browsemode ) browsemodeswitch;

    begingroupundo;
    moveto 0, -9999;
    while(1) {
        searchdown "^Date:     [^ ]", regular, casesense;
        if( !result ) {
            break;
        }
        if( (colorcode & 0x1F) != 3 ) {
            continue;
        }
        $date = gettext( 10, y, 256, y );
        $date = dllfuncstr("FormatDate", $date, "YYYY/MM/DD(W曜日) hh:mm:ss");
        moveto 10, y;
        beginsel;
        golineend2;
        delete;
        insert $date;
    }
    endgroupundo;
    print 1;
    undo;
    if( #readonly ) readonlyswitch;
    if( #browsemode ) browsemodeswitch;
    loaddll "tkinfo.dll";
    if( dllfunc("IsHidemaruMailMain") ) {
        #tmp = dllfunc("LeavePrintMulti");
    }

    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    writeregstr "SmallHdrRecv", $headerrecv;
    writeregstr "SmallHdrSend", $headersend;
    writeregstr "SmallHdrRecv_backup$$$", "";
    writeregstr "SmallHdrSend_backup$$$", "";
    closereg;

    #shellobj = createobject("WScript.Shell");
    if(#shellobj != 0){
        callmethod #shellobj, "RegDelete",
        "HKCU\\Software\\Hidemaruo\\TuruKame\\Config\\SmallHdrRecv_backup$$$";
        callmethod #shellobj, "RegDelete",
        "HKCU\\Software\\Hidemaruo\\TuruKame\\Config\\SmallHdrSend_backup$$$";
        releaseobject #shellobj;
    }


    loaddll "tkinfo.dll";
    #n = dllfunc("ExecAtMain", "EnvChangedDanger");

    if( #headerview == 1 ) {
        #n = dllfunc("SwitchHeaderView", 0);
    }
    #n = dllfunc("SwitchHeaderView", #headerview);

    moveto #x, #y;

[ ]
RE:41744 メール印刷の表示についてNo.41747
秀まるお2 さん 11/10/26 16:54
 
 マクロにちょっとバグがあったので少し手直ししました。それと、Date:
ヘッダを日本語にする処理も省略しました。あと少し簡単にしました。


    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    $headerrecv =  getregstr("SmallHdrRecv_Backup$$$");
    if( $headerrecv == "" ) {
        $headerrecv =  getregstr("SmallHdrRecv");
    }
    $headersend =  getregstr("SmallHdrSend_Backup$$$");
    if( $headersend == "" ) {
        $headersend =  getregstr("SmallHdrSend");
    }

    $printheader = "Subject:\x01\x02From:\x01\x02Date:\x01\x02To:\x01\x02Cc:
\x01\x02";

    writeregstr "SmallHdrRecv", $printheader;
    writeregstr "SmallHdrSend", $printheader;
    writeregstr "SmallHdrRecv_backup$$$", $headerrecv;
    writeregstr "SmallHdrSend_backup$$$", $headersend;
    closereg;

    loaddll "tkinfo.dll";
    #n = dllfunc("ExecAtMain", "EnvChangedDanger");
    #headerview = dllfunc("HeaderView");
    if( #headerview != 1 ) {
        #n = dllfunc("SwitchHeaderView", 1);
    }


    if( dllfunc("IsHidemaruMailMain") ) {
        #n = dllfunc("EnterPrintMulti");
    } else {
        if( #headerview == 1 ) {
            #n = dllfunc("SwitchHeaderView", 0);
            #n = dllfunc("SwitchHeaderView", 1);
        }
    }

    print 1;

    if( dllfunc("IsHidemaruMailMain") ) {
        #tmp = dllfunc("LeavePrintMulti");
    }
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    writeregstr "SmallHdrRecv", $headerrecv;
    writeregstr "SmallHdrSend", $headersend;
    writeregstr "SmallHdrRecv_backup$$$", "";
    writeregstr "SmallHdrSend_backup$$$", "";
    closereg;
    #shellobj = createobject("WScript.Shell");
    if(#shellobj != 0){
        callmethod #shellobj, "RegDelete",
        "HKCU\\Software\\Hidemaruo\\TuruKame\\Config\\SmallHdrRecv_backup$$$";
        callmethod #shellobj, "RegDelete",
        "HKCU\\Software\\Hidemaruo\\TuruKame\\Config\\SmallHdrSend_backup$$$";
        releaseobject #shellobj;
    }
    #n = dllfunc("ExecAtMain", "EnvChangedDanger");

    if( #headerview == 1 ) {
        #n = dllfunc("SwitchHeaderView", 0);
    }
    #n = dllfunc("SwitchHeaderView", #headerview);

[ ]