(質問)パブリッシャー印刷時の添付ファイNo.25961
hidebo さん 06/01/17 11:54
 
 日頃より秀丸を使用させていただき,重宝しております。
 ヘルプ,過去ログ等で探せなかったので,質問させていただきます。
 秀丸メール(V.4.60)で受信したメールをパブリッシャー(v.2.44)で
印刷する際に,添付ファイル名を印刷したいのですが,どうすればよ
いのでしょうか?初歩的な質問で恐縮ですが,ご教示いただけると助
かります。
 よろしくお願いします。

[ ]
RE:25961 (質問)パブリッシャー印刷時の添No.25963
秀まるお2 さん 06/01/17 12:30
 
 簡略表示のヘッダにX-Attach:を追加すれば、それで一応、添付ファイル・フ
ァイル名も印刷されます。それで使って欲しいです。

 まずは、「全般的な設定・上級者向け」の「上級者向け設定を表示する」をON
にします。

 「全般的な設定・メール表示・ヘッダ」の「受信用メールの時」の中に、手で
「X-Attach:」を追加します。

[ ]
RE:25963 (質問)パブリッシャー印刷時の添No.25966
hidebo さん 06/01/17 13:10
 
> 簡略表示のヘッダにX-Attach:を追加すれば、それで一応、添付ファイル・フ
>ァイル名も印刷されます。それで使って欲しいです。
>
> まずは、「全般的な設定・上級者向け」の「上級者向け設定を表示する」をON
>にします。
>
> 「全般的な設定・メール表示・ヘッダ」の「受信用メールの時」の中に、手で
>「X-Attach:」を追加します。

秀まるお2 さん
早速のご指導ありがとうございます。
添付ファイル名の印刷できました。

ただ,フォルダ名も表示・印刷されていますので,
もし,ファイル名のみの表示・印刷が可能であれば,
手法を教えていただけないでしょうか?
度々の質問で大変恐縮ですが,何卒よろしくお願い
します。
 

[ ]
RE:25966 (質問)パブリッシャー印刷時の添No.25968
秀まるお2 さん 06/01/17 13:51
 
 マクロを使って、1通づつ印刷するって条件でなら出来ますが…。以下のよう
なマクロでどうでしょ?

    loaddll "tkinfo.dll";
    #attachcount = dllfunc("CountCurrentHeader", "X-Attach");
    if( #attachcount != 0 ) {
        #n = dllfunc("BeginEditMail");
        #browse = browsemode;
        if( #browse ) browsemodeswitch;
        #readonly = readonly;
        if( #readonly ) readonlyswitch;
        gofileend;
        if( x != 0 ) {
            insert "\r\n";
        }
        insert "\r\n-------------添付ファイルの一覧---------\r\n";
        #i = 0;
        while( #i < #attachcount ) {
            $attach = dllfuncstr("CurrentHeader2", "X-Attach", #i);
            while(1) {
                #x = strstr( $attach, "\\" );
                if( #x < 0 ) {
                    break;
                }
                $attach = midstr( $attach, #x + 1, 256 );
            }
            insert $attach + "\r\n";
            #i = #i + 1;
        }
    }

    openreg "CLASSESROOT",
      "CLSID\\{3790E08E-DA26-41E2-B6B7-A2C2DED41C2F}\\InprocServer32";
    if( ! result ) {
        message "秀丸パブリッシャーがインストールされていません。";
        endmacro;
    }
    $path = getregstr("");
    closereg;
    loaddll $path;
    if( !result ) {
        message "HidemaruApi.dllのロードに失敗しました。";
        endmacro;
    }
    openreg "CURRENTUSER", "Software\\Hidemaruo\\Hmpv\\Conf";
    $template = getregstr("StartHPT");
    closereg;
    #n = dllfunc("PrintDialog", hidemaruhandle(0), $template
            , 0, 0, 0,1,0 );
    loaddll "tkinfo.dll";
    if( #attachcount != 0 ) {
        if( #browse ) browsemodeswitch;
        #n = dllfunc("CancelEditMail");
    }

[ ]
RE:25968 (質問)パブリッシャー印刷時の添No.25971
hidebo さん 06/01/17 14:27
 
> マクロを使って、1通づつ印刷するって条件でなら出来ますが…。以下のよう
>なマクロでどうでしょ?
>

早速のご指導ありがとうございます。
マクロの実行により添付ファイル名の印刷が
できました。ありがとうございます。

1通々々マクロを実行するというのも。。。
できれば,ヘッダ表示・印刷でフォルダ名が外せれば
大変ありがたいのですが,無理でしょうか?

[ ]
RE:25971 (質問)パブリッシャー印刷時の添No.25972
秀まるお2 さん 06/01/17 15:03
 
 X-Attach:ヘッダを改変してしまうと、添付ファイルとのリンク関係が分から
なくなってよくないです。

 しいてやるなら、X-Attach:ヘッダとは別に、例えば

AttachFile: XXXXXX.xxx

 みたいなヘッダを生成してやるようなマクロを作って、それを簡略表示ヘッダ
として表示させてやる手はありますけど。または、前回作ったような感じにメー
ル本文を加工してしまうことも出来ますが。

 選択したメールすべてを、仮にAttachFile:ヘッダ埋め込みにしてやるとした
ら、マクロはこうなります。

    loaddll "tkinfo.dll";
    #n = dllfunc("LockSelection");
    while(1) {
        #n = dllfunc("EnumSelection", 1);
        if( #n == 0 ) {
            break;
        }
        call AddAttachFileHeader;
    }
    #n = dllfunc("UnlockSelection", 1);
    endmacro;

AddAttachFileHeader:
    #attachcount = dllfunc("CountCurrentHeader", "X-Attach");
    if( #attachcount == 0 ) {
        return;
    }
    if( dllfunc("CountCurrentHeader", "AttachFile") != 0 ) {
        return;
    }
    #n = dllfunc("BeginEditMail");
    #i = 0;
    while( #i < #attachcount ) {
        $attach = dllfuncstr("CurrentHeader2", "X-Attach", #i);
        while(1) {
            #x = strstr( $attach, "\\" );
            if( #x < 0 ) {
                break;
            }
            $attach = midstr( $attach, #x + 1, 256 );
        }
        #n = dllfunc("AddHeader", "AttachFile:", $attach);
        #i = #i + 1;
        #n = dllfunc("SaveEditMail", 0, 0);
    }
    return;

[ ]