情報アイテムを開いたら送受信日付を更新No.43283
styth さん 12/09/16 07:10
 
 情報アイテムのメールだけ、開いたらその時の送受信日付が自動的に更新され
るようにしたいのですが、できないでしょうか?(マクロでも構いません)
 情報アイテムのメールは特定のフォルダにしか入っていません。
 よろしくお願いします。

[ ]
RE:43283 情報アイテムを開いたら送受信日No.43289
秀まるお2 さん 12/09/18 10:28
 
 メールを開くというとは、メールをダブルクリックするか、またはメールを選
択してEnterキーを押すって操作になると思います。その操作に対して何か
マクロを割り当てておくって作戦にすれば、そのマクロの中で送受信日時を更新
することは出来ると思います。

 そういう作戦でやるとしたら、例えばマクロでは、

    loaddll "tkinfo.dll";
    #n = dllfunc("OpenMail");
    if( dllfunc("GetMailFlag", "send") != 0 ) {
        $to = dllfuncstr("CurrentHeader", "To");
        if( strstr( $to, "@.item" ) >= 0 ) {
            #n = dllfunc("SaveDraft");
        }
    }

 みたいなマクロでいけると思います。

 そういうマクロを「マクロ・マクロ登録...」で登録しておいて、あとはキー
割り当てで、このマクロに対してEnterを割り当てるのがお勧めです。

 ダブルクリックした時にも効くようにするには、マクロを2重登録してそれぞ
れのコマンドに対してEnterとダブルクリックを割り当てないとダメかと思いま
す。

[ ]
RE:43289 情報アイテムを開いたら送受信日No.43304
styth さん 12/09/20 20:34
 
 ありがとうございます。できました。
 ところで、情報アイテムを開いて、閉じた時に送受信日時を更新するか問い合せ
るという風にするにはどうすれば良いんでしょうか?
 よろしくお願いします。

[ ]
RE:43304 情報アイテムを開いたら送受信日No.43305
秀まるお2 さん 12/09/21 08:49
 
 エディタ・ウィンドウを閉じるタイミングでマクロを自動起動するって機能は
無いので、そういうことは出来ないです。

 「閉じる」って操作をマクロで実行するなら別ですけども。例えばウィンドウ
の右上の「×」を押すのをマクロ起動に置き換えるようなことは出来ないです。

[ ]
RE:43305 情報アイテムを開いたら送受信日No.43321
styth さん 12/09/22 00:42
 
> 「閉じる」って操作をマクロで実行するなら別ですけども。
 閉じる、という操作はescキーでやっています。
 このキーにマクロを割り当てて、上記の「情報アイテムを開いて、閉じた時に
送受信日時を更新するか問い合せる」ということをマクロでやることは可能でし
ょうか?
 よろしくお願いします。

[ ]
RE:43321 情報アイテムを開いたら送受信日No.43325
秀まるお2 さん 12/09/22 10:54
 
 Escキーにマクロを割り当てることは出来ます。

 まずはマクロの内容としては以下のようになります。

------------------------------------------------------------------------
    loaddll "tkinfo.dll";
    if( dllfunc("GetMailFlag", "send") != 0 ) {
        $to = dllfuncstr("CurrentHeader", "To");
        if( strstr( $to, "@.item" ) >= 0 ) {
            if( updated ) {
                #n = dllfunc("Bypass_MessageBox", hidemaruhandle(0)
                        , "この情報アイテムの書き換え内容を保存しますか?"
                        , "情報アイテム"
                        , 3 + 0x20      // MB_YESNOCANCEL | MB_ICONQUESTION
                        );
                if( #n == 2 ) { //IDCANCEL
                    endmacro;
                }
                if( #n == 7 ) { //IDNO
                    quit;
                }
            } else {
                question "この情報アイテムの送受信日時を更新しますか?";
                if( result != yes ) {
                    quit;
                }
            }
            #n = dllfunc("SaveDraft");
            exit;
        }
    }
    exit;
    endmacro;
------------------------------------------------------------------------

 これを、「マクロ・マクロ登録...」の「エディタ側」ページのどこかに登録
します。

 それから「設定・キー割り当て...」で、例えばマクロ1に割り当ててる場合
は、

 マクロ1:マクロ名   (エディタ側)

 のコマンドに対してEscキーを割り当てればいいです。

 こちらでテストした限りはそれでうまくいきましたけど、エディタ・
ウィンドウ上でEscキーを押せばこのマクロが必ず動作してしまうので、もしか
したら想定外のこともあるかもしれないです。何か不都合があったらまた連絡く
ださい。

[ ]
RE:43325 情報アイテムを開いたら送受信日No.43355
styth さん 12/10/01 22:18
 
> こちらでテストした限りはそれでうまくいきましたけど、エディタ・
>ウィンドウ上でEscキーを押せばこのマクロが必ず動作してしまうので、もしか
>したら想定外のこともあるかもしれないです。何か不都合があったらまた連絡く
>ださい。
 不都合ではありませんが、教えて下さい。
 エディタ・ウィンドウ上で、Ctrl+sで保管した直後に、escを押しても、
「この情報アイテムの送受信日時を更新しますか?」が表示されないようにした
いのですが。
 エディタ上でヘッダをすべて表示にしたのですが、情報アイテムの送受信日が
表示されませんでした。
 よろしくお願いします。

[ ]
RE:43355 情報アイテムを開いたら送受信日No.43356
styth さん 12/10/01 22:27
 
> エディタ・ウィンドウ上で、Ctrl+sで保管した直後に、escを押しても、
 すみません。直後だと意味が曖昧なので、「同じ日だったら」、に訂正させて下さ
い。
 よろしくお願いします。

[ ]
RE:43356 情報アイテムを開いたら送受信日No.43357
秀まるお2 さん 12/10/02 00:01
 
 同じ日だったらquitするってことで、こんなマクロでどうでしょうか。

    loaddll "tkinfo.dll";
    if( dllfunc("GetMailFlag", "send") != 0 ) {
        $to = dllfuncstr("CurrentHeader", "To");
        if( strstr( $to, "@.item" ) >= 0 ) {
            if( updated ) {
                #n = dllfunc("Bypass_MessageBox", hidemaruhandle(0)
                        , "この情報アイテムの書き換え内容を保存しますか?"
                        , "情報アイテム"
                        , 3 + 0x20      // MB_YESNOCANCEL | MB_ICONQUESTION
                        );
                if( #n == 2 ) { //IDCANCEL
                    endmacro;
                }
                if( #n == 7 ) { //IDNO
                    quit;
                }
            } else {
                $today = dllfuncstr("CurrentDate", "YYYY/MM/DD");
                $transday = leftstr( dllfuncstr("GetMailTransmitDate"), 10 );
                if( $today == $transday ) {
                    quit;
                }
                question "この情報アイテムの送受信日時を更新しますか?";
                if( result != yes ) {
                    quit;
                }
            }
            #n = dllfunc("SaveDraft");
            exit;
        }
    }
    exit;
    endmacro;

[ ]
RE:43357 情報アイテムを開いたら送受信日No.43652
styth さん 12/11/22 16:56
 
 情報アイテムを新規で開いて、何もしないで、escキーを押した時は、何も問
い合せなしで終了したいのですが、教えて頂いたマクロをどう直せば良いんでし
ょうか?
 情報アイテムを新規作成には、テンプレートを使っています。
 よろしくお願いします。

[ ]
RE:43652 情報アイテムを開いたら送受信日No.43653
秀まるお2 さん 12/11/22 18:04
 
 何も更新してなくて保存もしてない情報アイテムの場合だと、

   GetMailTransmitDate

 の返り値が""になるので、その場合はquitすればいいかと思います。

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


    loaddll "tkinfo.dll";
    if( dllfunc("GetMailFlag", "send") != 0 ) {
        $to = dllfuncstr("CurrentHeader", "To");
        if( strstr( $to, "@.item" ) >= 0 ) {
            if( updated ) {
                #n = dllfunc("Bypass_MessageBox", hidemaruhandle(0)
                        , "この情報アイテムの書き換え内容を保存しますか?"
                        , "情報アイテム"
                        , 3 + 0x20      // MB_YESNOCANCEL | MB_ICONQUESTION
                        );
                if( #n == 2 ) { //IDCANCEL
                    endmacro;
                }
                if( #n == 7 ) { //IDNO
                    quit;
                }
            } else {
                $today = dllfuncstr("CurrentDate", "YYYY/MM/DD");
                $transday = leftstr( dllfuncstr("GetMailTransmitDate"), 10 );
                if( $transday == "" ) {
                    quit;
                }
                if( $today == $transday ) {
                    quit;
                }
                question "この情報アイテムの送受信日時を更新しますか?";
                if( result != yes ) {
                    quit;
                }
            }
            #n = dllfunc("SaveDraft");
            exit;
        }
    }
    exit;
    endmacro;

[ ]
RE:43653 情報アイテムを開いたら送受信日No.45249
styth さん 13/11/02 10:17
 
 情報アイテムを見ていて、次に秀丸エディタをやります。
 情報アイテムをescで閉じると、秀丸エディタがアクティブになります。
(Windowsの挙動としては普通ですが)
 マクロを改造して、秀丸メール本体をアクティブにすることはできないでしょうか?
 よろしくお願いします。

[ ]
RE:45249 情報アイテムを開いたら送受信日No.45256
秀まるお2 さん 13/11/05 09:42
 
 秀丸メール本体ウィンドウをアクティブにするには、例えば

    quit;

 としている所については、

    #editor = hidemaruhandle(0);
    #n = dllfunc( "SetMainWndTop" );
    closehidemaruforced #editor;

 のようにしたらいいかと思います。

 exit;としている所についてはそういう訳にいかないので、ちょっと見た目が
良くないですが、

    #editor = hidemaruhandle(0);
    #n = dllfunc( "SetMainWndTop" );
    setactivehideamru #editor;
    exit;

 のように、一度秀丸メール本体ウィンドウを全面に持ってきてからもう一度エ
ディタ・ウィンドウを全面に持ってきて、それからexit;を実行するようにする
しか無いかと思います。

 マクロの例としては以下のようになりますが、すみませんが1度もテストして
ないです。動かしてみておかしい点があればまた連絡ください。

    loaddll "tkinfo.dll";
    if( dllfunc("GetMailFlag", "send") != 0 ) {
        $to = dllfuncstr("CurrentHeader", "To");
        if( strstr( $to, "@.item" ) >= 0 ) {
            if( updated ) {
                #n = dllfunc("Bypass_MessageBox", hidemaruhandle(0)
                        , "この情報アイテムの書き換え内容を保存しますか?"
                        , "情報アイテム"
                        , 3 + 0x20      // MB_YESNOCANCEL | MB_ICONQUESTION
                        );
                if( #n == 2 ) { //IDCANCEL
                    endmacro;
                }
                if( #n == 7 ) { //IDNO
Label_Quit:
                    //quit;
                    #editor = hidemaruhandle(0);
                    #n = dllfunc("SetMainWndTop");
                    closehidemaruforced #editor;
                    endmacro;
                }
            } else {
                $today = dllfuncstr("CurrentDate", "YYYY/MM/DD");
                $transday = leftstr( dllfuncstr("GetMailTransmitDate"), 10 );
                if( $transday == "" ) {
                    //quit;
                    goto Label_Quit;
                }
                if( $today == $transday ) {
                    goto Label_Quit;
                }
                question "この情報アイテムの送受信日時を更新しますか?";
                if( result != yes ) {
                    goto Label_Quit;
                }
            }
            #n = dllfunc("SaveDraft");
            exit;
        }
    }
    #editor = hidemaruhandle(0);
    #n = dllfunc( "SetMainWndTop" );
    setactivehidemaru #editor;
    exit;
    endmacro;

[ ]
RE:45256 情報アイテムを開いたら送受信日No.45258
styth さん 13/11/05 11:38
 
 情報アイテムを開いて編集後、秀丸エディタに行きます。
 情報アイテムに戻って、ESCを押すと、

「この情報アイテムの書き換え内容を保存しますか?」と聞かれるので、

 Yとすると、秀丸メール本体に戻りません。
 よろしくお願いします

[ ]
RE:45256 情報アイテムを開いたら送受信日No.45259
styth さん 13/11/05 11:48
 
            #n = dllfunc("SaveDraft");
            //exit;

 としたら、良い感じです。
 また何かあったら御連絡します。

[ ]