送受信終了までマクロ待機No.08796
Iranoan さん 04/12/20 19:08
 
 皆さん今日は、Iranoan です。
 EnvChanged 関数を使っているマクロがあるので、送受信終了までマクロを
待機したいのですが、何か良い方法は無いでしょうか? IsTransmitting 関数
は、
> IsTransmitting関数が0を返すまでマクロ待機(ループ)させて待つことはできま
>せん。
なので、使えないし...。

[ ]
RE:08796 送受信終了までマクロ待機No.08799
秀まるお さん 04/12/21 10:34
 
 待機させるなら、マクロを実行してるスレッドとは別にスレッドまたはプロセ
スを起動して、そこから鶴亀本体のスレッドを監視するしかありません。

 マクロはとにかく一回終了させてやらないと、送受信が終わった扱いになるこ
とはありません。

 現実的にはそこまでがんばってやるのは大変というか、少なくともマクロだけ
では無理な話なので、例えば「送受信が終わったらもう一回マクロを実行しなお
してください」と言いつつマクロを終了させて、後はユーザーさんにもう一回マ
クロ実行などしてもらうとか。

[ ]
RE:08799 送受信終了までマクロ待機No.08801
Iranoan さん 04/12/21 12:30
 
 秀まるおさん今日は、Iranoan です。
>  現実的にはそこまでがんばってやるのは大変というか、少なくともマクロだけ
> では無理な話なので、例えば「送受信が終わったらもう一回マクロを実行しなお
> してください」と言いつつマクロを終了させて、後はユーザーさんにもう一回マ
> クロ実行などしてもらうとか。
 「受信が一段落した時」用のマクロなので、定期受信と手動送信が重なって
しまい、マクロの最初に設定変更後、最後に元に戻すことが出来ないことがよ
くあるんですよね。
 何か良い手はないものか。

[ ]
RE:08801 送受信終了までマクロ待機No.08802
秀まるお さん 04/12/21 13:42
 
 状況がよく理解できてないんですけど、「受信が一段落した時」用のマクロな
らば、マクロ起動時点では送受信系の動作はしてなくて、IsTransmittingは0を
返すはずですよね。それなのに、マクロ実行してる最中に、それと並行して定期
受信が始まってしまうことがあるって意味ですかね?

 それがなるなら、例えば鶴亀メール側で、マクロ実行中は定期受信(?)しな
いように抑止すべきかと思いますが…。あるいは、そういうケースについては、
IsTransmittingが0になるまでループしても、ループから抜け出ることは可能な
気がします。(テストしないけど)

 あと、1つ思いつきました。もしかして、エディタ上でマクロ実行してるだけ
ならば、IsTransmittingが0になるまでループするってのはありだと思います。

[ ]
RE:08802 送受信終了までマクロ待機No.08803
Iranoan さん 04/12/21 14:08
 
 秀まるおさん今日は、Iranoan です。
>  状況がよく理解できてないんですけど、「受信が一段落した時」用のマクロな
> らば、マクロ起動時点では送受信系の動作はしてなくて、IsTransmittingは0を
> 返すはずですよね。それなのに、マクロ実行してる最中に、それと並行して定期
> 受信が始まってしまうことがあるって意味ですかね?
 「マクロ実行中に、手動で送信することがある」ということです。
 例えば、次のようなマクロを「受信が一段落した時」に指定していたとしま
す。
        :(1)マクロの都合で設定変更
#tmp = dllfunc( "EnvChanged" );
        :
        :(2)実際にマクロでやりたい処理をする
        :
        :(3)設定を元に戻す処理
#tmp = dllfunc( "EnvChanged" );
freedll;
endmacro;

 そして、メールを書いている正にその時は、定期受信をしたことはユーザは
意識していません。するとマクロを実行中、特に(2) の処理を行っている時に、
送信することがあります。しかしこの送信時に、(3) の後の EnvChanged 関数
で失敗してしまって、設定を元に戻せないことがあり、それを何とかしたいと。

[ ]
RE:08803 送受信終了までマクロ待機No.08804
秀まるお さん 04/12/21 16:02
 
 状況をやっと理解しました。

 そもそもですが、現状のIsTransmitting関数は、エディタウィンドウが「今す
ぐ送信」をしている最中であっても、鶴亀本体が何もしてなければ0を返してし
まいます。

 EnvChanged関数は、たしかにエディタウィンドウで「今すぐ送信」してる最中
だと失敗します。でも、例えばエディタウィンドウで「今すぐ送信」をしている
最中に「全般的な設定」のOKボタンを押してもエラーにならないです。

 ってことで、こういうケースではEnvChanged関数が失敗しないように修正しま
す。それで万事解決だと思います。

[ ]
RE:08804 送受信終了までマクロ待機No.08805
秀まるお さん 04/12/21 16:11
 
 やっぱり、「今すぐ送信」が動いてる最中に「全般的な設定」がOKできてしま
うとまずいです。例えばホームディレクトリを変更したらとんでもないことにな
ります。

 ということで、やはりここはちゃんと制限しつつ、単にエラーにするんじゃな
くて、「今すぐ送信」の処理が終わるまで待機するような作りにします。それで
万事解決だと思います。

[ ]
RE:08804 送受信終了までマクロ待機No.08806
Iranoan さん 04/12/21 16:17
 
 秀まるおさん今日は、Iranoan です。
 解りにくい説明で申し訳ありませんでした。
> こういうケースではEnvChanged関数が失敗しないように修正しま
> す。それで万事解決だと思います。
 宜しくお願いします。

[ ]
RE:08805 送受信終了までマクロ待機No.08807
Iranoan さん 04/12/21 16:26
 
 秀まるおさん今日は、Iranoan です。
> やはりここはちゃんと制限しつつ、単にエラーにするんじゃな
> くて、「今すぐ送信」の処理が終わるまで待機するような作りにします。
 入れ違いになってしまいましたが、これで安心です。

[ ]