秀丸エディタで編集中の文書をメールにしNo.08640
styth さん 21/09/27 22:59
 
 秀丸エディタで、例えば、xxx.txtという文書を編集していたとします。
 これを秀丸メールの本文に貼り付けて(添付ファイルではなく)で送る、とい
う作業を、マクロでやりたいのですが、どう書けば良いのか分かりません。
 件名は、xxx.txtにしたいです。
 よろしくお願いいたします。

[ ]
RE:08640 秀丸エディタで編集中の文書をメNo.08643
秀まるお2 さん 21/09/28 09:24
 
 現在のファイルを秀丸エディタで「新規メール」として出すマクロを作ってみまし
た。


    $subject = basename;
    if( $subject == "" ) {
        message "ファイル名が不明なので続行できません。";
        endmacro;
    }
    if( updated ) {
        question "現在のファイルを上書き保存してもいいですか?";
        if( result != yes ) {
            message "マクロ中断します。";
            endmacro;
        }
        save;
    }
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    $exe = getregstr("TuruKameDir");
    closereg;
    if( $exe == "" ) {
        message "秀丸メールのインストール先が不明です。";
        endmacro;
    }
    $exe = $exe + "TuruKame.exe";
    if( ! existfile( $exe ) ) {
        message "秀丸メールのプログラム用ファイルがありません。パス = " + $exe;
        endmacro;
    }
    $command = "\"" + $exe + "\" newmail subject=\"" + $subject + "\" bodyfi
le=\"" + filename + "\"";
    run $command;

[ ]
RE:08643 秀丸エディタで編集中の文書をメNo.08646
styth さん 21/09/28 09:56
 
 ありがとうございます。
 宛先も、ほぼ固定なので、それも追加して頂けないでしょうか?
 よろしくお願いいたします。

[ ]
RE:08646 秀丸エディタで編集中の文書をメNo.08647
秀まるお2 さん 21/09/28 10:05
 
    $command = "\"" + $exe + "\" newmail subject=\"" + $subject + "\" bodyfi
le=\"" + filename + "\"";


 の所で宛先を指定すればいいんですが、たとえば

    $command = "\"" + $exe + "\" newmail subject=\"" + $subject + "\" bodyfi
le=\"" + filename + "\" to=XXXXXXXX";

 みたいな感じでto=XXXXXって形で宛先を指定すればいいです。

 ヘルプの「応用関係」の中の「秀丸メール起動時のコマンドライン」が参考になり
ます。

[ ]
RE:08647 秀丸エディタで編集中の文書をメNo.08661
styth さん 21/09/30 07:48
 
> みたいな感じでto=XXXXXって形で宛先を指定すればいいです。
> ヘルプの「応用関係」の中の「秀丸メール起動時のコマンドライン」が参考にな
>ります。
 ありがとうございます。ところで、運用上は問題ないんですが、

to=XXXXX

 ここを

to=<XXXXX>
とか
to=aaa <XXXXX>
to=aaa<XXXXX>

 にすると、うまくいきません。
 仕様でしょうか?

[ ]
RE:08661 秀丸エディタで編集中の文書をメNo.08662
秀まるお2 さん 21/09/30 08:34
 
 To:の宛先に空白を含んでるようであれば、ダブルクォーテーションで囲む必要が
あります。

  to="aaa <bbb>"

 みたいに指定しないといけないです。マクロで書くと、

    $command = "\"" + $exe + "\" newmail subject=\"" + $subject + "\" bodyfi
le=\"" + filename + "\" to=\"aaa <bbb>\"";

 みたいになると思います。それでどうでしょうか。

[ ]
RE:08662 秀丸エディタで編集中の文書をメNo.08663
styth さん 21/09/30 09:32
 
>    $command = "\"" + $exe + "\" newmail subject=\"" + $subject + "\" bodyf
>ile=\"" + filename + "\" to=\"aaa <bbb>\"";
> みたいになると思います。それでどうでしょうか。
  もう、複雑すぎて、自分では書けませんが、出来ました。ありがとうございます。


[ ]
RE:08662 秀丸エディタで編集中の文書をメNo.08694
styth さん 21/10/07 09:46
 
 作って頂いたマクロを快適に使わせて頂いています。
 ところで、今度は、秀丸メールの@itemを同様に送信しようと思います。
 こういった場合、このマクロ(仮にA)を直してやったほうが良いのか、改め
て新しく作った方が良いのか、考えています。
 後者(仮にB)なら、toを変えて、fromを追加するだけのような気がしますが、
マクロAを流用するとしたら、どう直せば良いんでしょうか?
 急いでいませんし、後者Bの方が良いと仰るなら、そういうアドバイスを頂ける
と、有り難いです。
 クリップボードを使えば、良さそうなんですが、そんなことを考えるより、一
層Bにしてしてしまえば良いような気もします。
 Aを変える方に興味はありますが、よろしくお願いいたします。

[ ]
RE:08694 秀丸エディタで編集中の文書をメNo.08697
秀まるお2 さん 21/10/07 10:32
 
 情報アイテムというか、今現在選択してるメールと中身(メール本文および件名)
が同じ新規メールを作成するマクロってことでなら、以下のようになります。(とり
あえず秀丸メール本体ウィンドウ上で実行する専用マクロ)

 何かもっとこういうマクロがいいとかあれば連絡ください。

----------------------------------------------------------------------------
-----
    loaddll "tkinfo.dll";
    gofileend;
    $text = gettext( 0, 0, x, y );
    $subject = dllfuncstr("CurrentHeader", "Subject");
    #n = dllfunc("NewMail");
    #n = dllfunc("SetHeader", "Subject", $subject);
    gofiletop;
    beginsel;
    gofileend;
    delete;
    insertfix $text;
----------------------------------------------------------------------------
-----

[ ]
RE:08697 秀丸エディタで編集中の文書をメNo.08698
styth さん 21/10/07 12:10
 
> 情報アイテムというか、今現在選択してるメールと中身(メール本文および件
>名)が同じ新規メールを作成するマクロってことでなら、以下のようになります。
>(とりあえず秀丸メール本体ウィンドウ上で実行する専用マクロ)
 fromが挿入されていませんが、自分で追加して、できました。

> 何かもっとこういうマクロがいいとかあれば連絡ください。
 ありがとうございます。
 お言葉に甘えて申し上げますと、秀丸メールエディタウィンドウ上でも、実行
したいのですが、よろしくお願いいたします。

[ ]
RE:08698 秀丸エディタで編集中の文書をメNo.08702
秀まるお2 さん 21/10/07 14:00
 
>  お言葉に甘えて申し上げますと、秀丸メールエディタウィンドウ上でも、実行
> したいのですが、よろしくお願いいたします。

 動作確認してなかったんですが、そのままでエディタ・ウィンドウ上でも実行可能
になってました。

[ ]
RE:08697 秀丸エディタで編集中の文書をメNo.08703
styth さん 21/10/07 23:36
 
 No.08643で、run $command;で、できたメール、Aとします。
 No.08697で、dllfunc("NewMail");、できたメール、Bとします。

 Aは、ヘッダーが

From:    
To:      
Subject:  


 Bは、ヘッダーが

To:      
Subject:  
From:    

 の順で表示されます。

 BのヘッダーをAのように出来ないでしょうか?送信後のヘッダーの並びは、同じで
す。

 それと、もう一点、あります。
 Aは閉じようとしても、保存しますか?と聞いてきません。
 Bは閉じようとすると、保存しますか?と聞いてきます。

 保存しますか?と聞いてこないようにしたいのですが。

 以上、2点、よろしくお願いいたします。

[ ]
RE:08703 秀丸エディタで編集中の文書をメNo.08704
秀まるお2 さん 21/10/08 09:08
 
 こちらでテストした限りでは、どっちのマクロもヘッダの並び順は

   From:
   To:
   Subject:

 になって、EscキーやAlt+F4で閉じようとすると、「保存しますか?」が出てきます。

 stythさんの所での現象がなぜ起きるのかちょっと分からないです。

 とりあえず、

    loaddll "tkinfo.dll";
    #n = dllfunc("NewMail");

 で起動したメールのヘッダの並び順がおかしくなる(To:が先頭に来る)のかどう
か1回試してみてほしいです。もしそれでもTo:が先頭に来るようでしたら、

    loaddll "tkinfo.dll";
    #n = sendmessage( hidemaruhandle(0), 0x111, 40001, 0);

 ってマクロだとどうかも試してみてほしいです。それでもダメなら「ファイル」メ
ニューから「新規メール」としてもそういう風になるってことだと思うのですが、も
しそれでもダメなら、何か特殊なテンプレート指定されてるのか、あるいは自動起動
マクロがあるのか・・・。ちょっと分からないです。

 ウィンドウを閉じようとして保存するかどうか問い合わせが出ないのは、しいて
「clearupdated;」ってマクロ命令を使わないと起きないはずなので、これまたちょ
っと理由が分からないです。

[ ]
RE:08704 秀丸エディタで編集中の文書をメNo.08705
styth さん 21/10/08 10:23
 
>    loaddll "tkinfo.dll";
>    #n = dllfunc("NewMail");
> で起動したメールのヘッダの並び順がおかしくなる(To:が先頭に来る)のかどう
>か1回試してみてほしいです。もしそれでもTo:が先頭に来るようでしたら、
 同じです。

>    loaddll "tkinfo.dll";
>    #n = sendmessage( hidemaruhandle(0), 0x111, 40001, 0);
 これも同じでした。

> ってマクロだとどうかも試してみてほしいです。それでもダメなら「ファイル」
>メニューから「新規メール」としてもそういう風になるってことだと思うのですが、
>もしそれでもダメなら、何か特殊なテンプレート指定されてるのか、あるいは自動
>起動マクロがあるのか・・・。ちょっと分からないです。
 テンプレート指定されていました。
 お騒がせしました。多分、これです。

> ウィンドウを閉じようとして保存するかどうか問い合わせが出ないのは、しいて
>「clearupdated;」ってマクロ命令を使わないと起きないはずなので、これまたちょ
>っと理由が分からないです。
 #n = dllfunc( "ClearUpdated" );
 マクロの最後にこれを入れて、自分の思い通りのものが出来ました。
 ありがとうございます。

[ ]
RE:08643 秀丸エディタで編集中の文書を@iNo.08752
styth さん 21/10/22 09:43
 
> 現在のファイルを秀丸エディタで「新規メール」として出すマクロを作ってみま
>した。
 作って頂いたマクロ、重宝に使わせて頂いています。ありがとうございます。

 ところで、今、秀丸エディタで編集中の文書(未保存)を、@itemとして作成
するとしたら、マクロでどう書けば良いでしょうか?
 件名は、「選択された文字列」にして頂けたら、思います。

 マクロ実行後、秀丸メールに移った後、手直しするかもしれません。
 @itemnの保存は、手動になると思いますが、@itemの保存先も、固定なので、
そこも指定できると、嬉しいです。
 よろしくお願いいたします。

[ ]
RE:08752 秀丸エディタで編集中の文書を@iNo.08754
秀まるお2 さん 21/10/22 10:18
 
 マクロ作ってみました。

 folder=..... と指定してる所をご自身の情報アイテム保存用フォルダに書き換え
る必要があります。

 ファイル名の無い状態(新規作成状態)だと使えないのが不便かもしれませんけど
も。直そうと思えば直せるかとは思いますけども。

---------------------------------------------------------------------------
    $subject = basename;
    if( $subject == "" ) {
        message "ファイル名が不明なので続行できません。";
        endmacro;
    }
    if( selecting ) {
        $select = gettext( seltopx, seltopy, selendx, selendy, 1);
        if( strstr( $select, "\n" ) >= 0
         || strstr( $select, "\t" ) >= 0
         || strlen( $select ) >= 256 ) {
            //改行やタブ文字を含んでる場合はダメ?
            //長すぎる場合もダメ。
        } else {
            $subject = $select;
        }
    }
    if( updated ) {
        question "現在のファイルを上書き保存してもいいですか?";
        if( result != yes ) {
            message "マクロ中断します。";
            endmacro;
        }
        save;
    }
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    $exe = getregstr("TuruKameDir");
    closereg;
    if( $exe == "" ) {
        message "秀丸メールのインストール先が不明です。";
        endmacro;
    }
    $exe = $exe + "TuruKame.exe";
    if( ! existfile( $exe ) ) {
        message "秀丸メールのプログラム用ファイルがありません。パス = " + $exe;
        endmacro;
    }
    $command = "\"" + $exe + "\" newmail " +
            "folder=\"斉藤秀夫メイン\\User\\hidenet\"" +
            "subject=\"" + $subject + "\" bodyfile=\"" + filename + "\" to=@.
item";
    run $command;

[ ]
RE:08754 秀丸エディタで編集中の文書を@iNo.08757
styth さん 21/10/22 12:15
 
> マクロ作ってみました。
 ありがとうございます。

> ファイル名の無い状態(新規作成状態)だと使えないのが不便かもしれませんけ
>ども。直そうと思えば直せるかとは思いますけども。
 秀丸エディタで編集中の文書(未保存)、@itemとして、保存するので、基本
的には、テキストファイルとしては、保存しません。
 なので、編集中の文書全体をメールの本文にして頂きたいのですが、(bodyfile=c
lipboard?)
 よろしくお願いいたします。

[ ]
RE:08757 秀丸エディタで編集中の文書を@iNo.08758
秀まるお2 さん 21/10/22 13:40
 
 マクロ直してみました。ご指摘の通り、新規ファイルの場合はクリップボードを経
由するようにしました。

 ちょっとバグもあったのでそこも直しています。

----------------------------------------------------------
    $subject = basename;
    if( selecting ) {
        $select = gettext( seltopx, seltopy, selendx, selendy, 1);
        if( strstr( $select, "\n" ) >= 0
         || strstr( $select, "\t" ) >= 0
         || strlen( $select ) >= 256 ) {
            //改行やタブ文字を含んでる場合はダメ?
            //長すぎる場合もダメ。
        } else {
            $subject = $select;
        }
    }
    $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;
    }
    $command = "\"" + $exe + "\" newmail " +
            "folder=\"斉藤秀夫メイン\\User\\hidenet\"" +        //ここは各自
で書き換え必要。
            "subject=\"" + $subject + "\" " +
            "body=\"\" " +
            "bodyfile=" + $filename + " to=@.item";
    run $command;

[ ]
RE:08758 秀丸エディタで編集中の文書を@iNo.08759
秀まるお2 さん 21/10/22 13:42
 
 ちょっとインデントが狂ってしまったいました。

    $subject = basename;
    if( selecting ) {
        $select = gettext( seltopx, seltopy, selendx, selendy, 1);
        if( strstr( $select, "\n" ) >= 0
         || strstr( $select, "\t" ) >= 0
         || strlen( $select ) >= 256 ) {
            //改行やタブ文字を含んでる場合はダメ?
            //長すぎる場合もダメ。
        } else {
            $subject = $select;
        }
    }
    $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;
    }
    $command = "\"" + $exe + "\" newmail " +
            "folder=\"斉藤秀夫メイン\\User\\hidenet\"" +        //ここは各自
で書き換え必要。
            "subject=\"" + $subject + "\" " +
            "body=\"\" " +
            "bodyfile=" + $filename + " to=@.item";
    run $command;

[ ]
RE:08759 秀丸エディタで編集中の文書を@iNo.08760
styth さん 21/10/23 09:44
 
>    $subject = basename;
>    if( selecting ) {
>        $select = gettext( seltopx, seltopy, selendx, selendy, 1);
>        if( strstr( $select, "\n" ) >= 0
>         || strstr( $select, "\t" ) >= 0
>         || strlen( $select ) >= 256 ) {
>            //改行やタブ文字を含んでる場合はダメ?


 情報アイテムとして、秀丸エディタで書いている時に、標題として、

 〜〜〜について\n
 (以降、〜〜〜に関する記述が続く)

 という場合があります。
 〜〜〜の行を、行選択してメールの件名にしたいのですが、

 //改行やタブ文字を含んでる場合はダメ?

 ということではありますが、行末の改行はOKには、ならないでしょうか?
 行選択であれば、ワンクリックで済むところ、\nを入れないようにマウスを操
作(行頭から\nの手前までドラッグ)するのは、若干(本音を申し上げますと、
かなり)面倒です。
 よろしくお願いいたします

[ ]
RE:08760 秀丸エディタで編集中の文書を@iNo.08761
h-tom さん 21/10/24 08:52
 
h-tom です。

> ということではありますが、行末の改行はOKには、ならないでしょうか?
その他細かい条件が色々ありそうなので、自分で調整したほうがいいと思いますよ。
(とりあえず取り込んで、自分で加工すればOK。文字数の制限は必要そうですが)

> 行選択であれば、ワンクリックで済むところ、\nを入れないようにマウスを操
>作(行頭から\nの手前までドラッグ)するのは、若干(本音を申し上げますと、
>かなり)面倒です。
行頭から改行を含まない行末まで選択するマクロ作ればいいのでは?

[ ]
RE:08760 秀丸エディタで編集中の文書を@iNo.08762
秀まるお2 さん 21/10/25 09:08
 
 改行やタブも含む文字列を範囲選択した場合は、それらを空白に変換するように直
してみました。あと、長さも、長すぎる場合は適当にカットするようにしてみました。

----------------------------------------------------------------------------
----
 現在編集中の内容を秀丸メールの情報アイテム化するマクロ(秀丸エディタ用)
----------------------------------------------------------------------------
----
    $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);
        if(strlen( $select ) >= 150 ) {
            $select = leftstr( $select, 150 );
        }
        $subject = $select;
    }
    $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;
    }
    $command = "\"" + $exe + "\" newmail " +
            "folder=\"斉藤秀夫メイン\\User\\hidenet\"" +        //ここは各自
で書き換え必要。
            "subject=\"" + $subject + "\" " +
            "body=\"\" " +
            "bodyfile=" + $filename + " to=@.item";
    run $command;

[ ]
RE:08762 秀丸エディタで編集中の文書を@iNo.08763
styth さん 21/10/25 09:14
 
 ありがとうございます。自分でも、直してみました。

    $subject = basename;
    if( selecting ) {
        if ( seltopx == 0 && selendx == 0 ) {   //行選択中 selectlineの代用
            moveto 0, seltopy;
            golinetop;
            beginsel;
            golineend;
            endsel;
        }
        $select = gettext( seltopx, seltopy, selendx, selendy, 1);
        if( strstr( $select, "\n" ) >= 0
         || strstr( $select, "\t" ) >= 0
         || strlen( $select ) >= 256 ) {
            //改行やタブ文字を含んでる場合はダメ?
            //長すぎる場合もダメ。
        } else {
            $subject = $select;
        }
    }

 でも、教えて頂いたマクロを使わせて頂きたいと思います。
 selectlineについては、使いにくいところがあるので、秀丸エディタの方で、
要望してみたいと思います。

[ ]
RE:08762 行全体の文字列が件名になりませNo.08773
styth さん 21/10/28 08:40
 
 秀丸マクロの1行選択の方で、色々やっている時に、たまたまなんですが、・・・

message str(strrstr($str,"\n"));

 を改行まで含めて、1行選択します。カーソルは、次行の行頭にあります。

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

 メールのヘッダが、以下のようになります。
To:       @.item
Subject:  message str(strrstr($str,

 マクロAで変えたのは、
//   "folder=\"斉藤秀夫メイン\\User\\hidenet\"" +  //ここは各自で書き換え必要。
 ここだけで、このフォルダには、新規メールのテンプレートとして、

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

 が登録されています。


 因みになんですが、
(1)
message str(strrstr($str,"\r\n"));
 という文で、上記の作業を実行しても、結果は同じになります。

(2)
 新規の秀丸エディタに、
message str(strrstr($str,"\n"));
 この一文だけ入力して、上記の作業を実行すると、(本文まで掲載します。)

To:       @.item
Subject:  message str(strrstr($str,


message str(strrstr($str,"\n"));
[EOF]

 と、なります。



 それと、
https://www.maruo.co.jp/hidesoft/8/x08640_.html#8704
> ウィンドウを閉じようとして保存するかどうか問い合わせが出ないのは、しいて
>「clearupdated;」ってマクロ命令を使わないと起きないはずなので、これまたちょ
>っと理由が分からないです。
 とのコメントを頂きましたが、これとNoWarningHeaderUpdateは、関係はあるでで
しょうか?

[ ]
RE:08773 行全体の文字列が件名になりませNo.08775
styth さん 21/10/28 08:54
 
 もう一個、記載漏れがありました。

(3)
message str(strrstr($str,"\n"));
 を改行を入れないで手動で、行頭から改行手前まで選択します。
 マクロAを実行します。結果は同じです。

 なので、素人考えなんですが、

$select = dllfuncstr("ReplaceRegular", "[\\r\\n\\t]+", $select, 0, " ", 2);
$select = dllfuncstr("ReplaceRegular", " {2,}", $select, 0, " ", 2);

 ここは、関係ないのかな、と思います。(蛇足)

[ ]
RE:08775 行全体の文字列が件名になりませNo.08779
秀まるお2 さん 21/10/28 10:39
 
 テストしてみたら、秀丸メール起動時のコマンドラインで

    subject="...."

 の中にダブルクォーテーションがあるとダメみたいでした。

 今回の例だと、

    subject="message str(strrstr($str,"\n"));"

 みたいになって、結果として「\n」以降がカットされてしまうようです。

 subject=とかのパラメータの中にダブルクォーテーションを指定することは、残念
ながら現状不可なようです。なので、直すとしたら、

        $select = dllfuncstr("ReplaceRegular", "[\\r\\n\\t]+", $select, 0, "
 ", 2);
        $select = dllfuncstr("ReplaceRegular", " {2,}", $select, 0, " ", 2);

 の後ろに

        $select = dllfuncstr("ReplaceRegular", "\"", $select, 0, "\'", 2);

 を追加して、ダブルクォーテーションをシングルクォーテーションか何かに変換し
てやるしか無いような気がします。

 次のβ版にて、コマンドラインのパラメータにダブルクォーテーションも指定でき
るように直そうかなぁと思います。果たしてどういう仕様にしたらいいかが問題では
ありますが。

   subject=="aaa\"bbb\"ccc"

 みたいに「=="..."」って形式で指定した場合はC言語風文字列を指定できるように
するか・・・。誰かいい案があったら教えてほしいです。

[ ]
RE:08773 行全体の文字列が件名になりませNo.08780
秀まるお2 さん 21/10/28 10:49
 

> https://www.maruo.co.jp/hidesoft/8/x08640_.html#8704
> > ウィンドウを閉じようとして保存するかどうか問い合わせが出ないのは、しいて
> >「clearupdated;」ってマクロ命令を使わないと起きないはずなので、これまたちょ
> >っと理由が分からないです。
>  とのコメントを頂きましたが、これとNoWarningHeaderUpdateは、関係はあるでで
> しょうか?

 NoWarningHeaderUpdateは、テンプレートからヘッダを書き換えようとして警告が
出るのを防ぐ用の物でして、この件とは関係無いと思います。

[ ]
RE:08779 行全体の文字列が件名になりませNo.08782
秀まるお2 さん 21/10/28 11:27
 
 ダブルクォーテーションを秀丸メールのコマンドラインで渡す方法が一応ありまし
た。非公開の方法を使いました。

 マクロは以下のようになりました。


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

    $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;
    }
    $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;
    $command = "\"" + $exe + "\" newmail " +
            "folder=\"斉藤秀夫メイン\\User\\hidenet\"" +        //ここは各自
で書き換え必要。
            "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;

[ ]
RE:08782 行全体の文字列が件名になりませNo.08784
styth さん 21/10/30 07:15
 
> マクロは以下のようになりました。
 ありがとうございます。自分でアレンジしたものも含めて、うまく行きました。
 投稿しようか躊躇しましたが、自分では、対処できない問題ということが分かりま
した。
 また、何かありましたら、よろしくお願いいたします。

[ ]
RE:08782 行全体の文字列が件名になりませNo.08785
styth さん 21/11/02 09:01
 
>    $command = "\"" + $exe + "\" newmail " +
>            "folder=\"斉藤秀夫メイン\\User\\hidenet\"" +        //ここは各
>自で書き換え必要。
>            "subject=\"" + $subject + "\" " +
>            "body=\"\" " +
>            "bodyfile=" + $filename + " to=@.item";

bodyfile=clipboard(ヘルプに記載)
bodyfile="clipboard"

 教えて頂いたコードを拝見する限り、上記どちらを、使っても良いということ
だと思いますので、その旨をヘルプに追記して頂きたいのですが、よろしくお願
いいたします。

 それと、以下は報告ですので、秀丸エディタの方で、何かして頂きたいという
ものでは、ありません。

(1)
https://www.maruo.co.jp/hidesoft/8/x08640_.html#8643
 で、教ええ頂いたマクロでは、
 body=""がありません。

 body=""、を指定しないと、メール本文の1行目に空行が出来ます。
(bodyfileを指定すれば、body=""は不要と思いますが。)

(2)
$to = "@.item";
 この時は、
body=""
 を記述しない。
("@.item"を保存するフォルダでの、テンプレート指定アリ)

 こうすることで、メール本文の1行目に空行を出ないように出来ています。
 以上、ただの報告ですので、秀丸エディタの方で、何かして頂きたいというこ
とでは、ありません。

[ ]
RE:08785 行全体の文字列が件名になりませNo.08786
秀まるお2 さん 21/11/02 09:52
 
 ダブルクォーテーションで囲むルールにについては別途ルールを記述してるつもり
ではあります。例えばbody=aと書いてもbody="a"と書いてもどっちでもいいです。空
白を含む場合は""で囲む必要がありますが、空白を含まない場合はどっちでもいいで
す。

 あと、body=""を指定しないと空行が出てきてしまうのは、すみませんがたぶんバ
グだと思います。これは修正させていただきます。

[ ]
RE:08786 行全体の文字列が件名になりませNo.08787
秀まるお2 さん 21/11/02 11:16
 
 もっと調べてみたら、Folder=XXXXがあるとそれによってテンプレートも指定した
ことになりまして、それにプラスしてBodyFileを指定した形だと、追加扱いになるよ
うでした。

 なので、やはり現状の仕様そのままにしつつ、ヘルプの方に、

    body="" bodyfile="..."

 のように指定することで既存の本文を置き換える指定になって風に記述させていた
だきます。

[ ]
RE:08786 行全体の文字列が件名になりませNo.08789
styth さん 21/11/02 23:40
 
> ダブルクォーテーションで囲むルールにについては別途ルールを記述してるつも
>りではあります。例えばbody=aと書いてもbody="a"と書いてもどっちでもいいです。
>空白を含む場合は""で囲む必要がありますが、空白を含まない場合はどっちでもい
>いです。
 ご回答、ありがとうございます。
 バージョンアップして、ヘルプを拝見しました。多分、以下の部分が、上の説
明に該当すると思うのですが、誤字と思われる箇所を見つけましたので、指摘さ
せて頂きます。

>Version 7.10β10からの新仕様:
例えば「subject="aaa"」と指定すると、「aaa」を指定して扱いになりました。
例えば「subject="aaa"」と指定すると、「aaa」を指定した扱いになりました。

 多分、後者の言い回しの方が良いと、存じます。

[ ]
RE:08789 行全体の文字列が件名になりませNo.08793
秀まるお2 さん 21/11/04 08:51
 
 ヘルプのミスご指摘ありがとうございます。さっそく修正させていただきます。

[ ]