ReasonMacroStarted 関数の返り値についてNo.12800
Iranoan さん 06/09/13 00:01
 
 秀まるおさん今日は、Iranoan です。
 ReasonMacroStarted() 関数について、ヘルプに
> ExecMacro命令によって起動された場合:4
と有ります。しかし execmacro 文を使った場合の返り値は、0 です。DLL 関
数としては、ExecMacro() 関数がありませんので、同じにして頂くか、別の返
り値を用意して頂ければ幸いです。
 こちらの環境は、Windows98+IE6.0+秀丸メール Ver. 4.68beta3 です。

[ ]
RE:12800 ReasonMacroStarted 関数の返りNo.12801
秀まるお さん 06/09/13 10:37
 
 ReasonMacroStarted関数の返す値がexecmacro命令によって変化するのは都合
が悪いと思います。

 例えば、テンプレートの$(ExecMacro,xxxx)命令で起動されたマクロから
execmacro命令を使って起動されたマクロがReasonMacroStarted関数を呼び出し
たら、それはそれで4が返ってくれないと困ると思います。

 マクロが、execmacro命令によって起動されたのかどうか調べる必要は普通無
いと思いますけど。

[ ]
RE:12801 ReasonMacroStarted 関数の返りNo.12802
Iranoan さん 06/09/13 13:01
 
 秀まるおさん今日は、Iranoan です。
>  例えば、テンプレートの$(ExecMacro,xxxx)命令で起動されたマクロから
> execmacro命令を使って起動されたマクロがReasonMacroStarted関数を呼び出し
> たら、それはそれで4が返ってくれないと困ると思います。
 確かにそうですね。
 「同じ値」というのは取り下げます。

>  マクロが、execmacro命令によって起動されたのかどうか調べる必要は普通無
> いと思いますけど。
 ライブラリに公開している「秀丸メール配信予約マクロ」で、「受信が一段
落した時」のマクロとして実行されたときと、そうでないときの処理を分けて
います。
 理由は、このマクロでは、設定した日時、若しくは決まった時間間隔でメー
ルを
(1)自分宛に送る
(2)送信箱に作成
(3)草稿に保存
するのが主目的ですが、同時に
(A)「受信が一段落した時」は既に設定済みの処理をする
(B)「受信が一段落した時」でないときは、設定自体をする
と分けたいためです。

 そして、この様な「受信が一段落した時」のマクロは、上記の私のマクロに
限らず、
#n = dllfunc( "NewMail" );
$s = dllfuncstr( "NewEditorMacro" );
if( $s != "" ) execmacro $s;
という使い方と同様に、他のマクロ (仮に a.mac とします) から呼び出した
いことがあります。しかし現在ですと、a.mac を「受信が一段落した時」とし
て呼び出さない限り、かならず (B) の処理になってしまいます。

[ ]
RE:12802 ReasonMacroStarted 関数の返りNo.12803
秀まるお さん 06/09/13 16:54
 
 やりたいことは一応理解出来たと思うんですが、それをReasonMacroStartedで
なんとかするべき問題じゃなくて、単純にマクロ間で情報伝達してやればいいよ
うな気がします。

 例えばiniファイルを使う例として、

    writeininum macrodir + "\\reason.ini", "Option", "Reason", 1
    execmacro "a.mac";
    #n = dllfunc("Bypass_DeleteFile", macrodir + "\\reason.ini" );

 とかしてやって、a.mac側では、

   if( getininum( macrodir + "\\reason.ini", "Option", "Reason" ) != 0 )
       // 特別処理
   }

 みたいにするとか。

[ ]
RE:12803 ReasonMacroStarted 関数の返りNo.12804
Iranoan さん 06/09/13 21:49
 
 秀まるおさん今日は、Iranoan です。
> それをReasonMacroStartedで
> なんとかするべき問題じゃなくて、単純にマクロ間で情報伝達してやればいいよ
> うな気がします。
 解りました *.ini を使うようにします。

[ ]