リモートメール・ウィンドウの見分け方No.06468
ひろ さん 03/03/12 12:49
 
 皆さん今日は、ひろです。
 リモートメールのウィンドウが開いている場合、本体で動くことを想定して
いるマクロが正常に動作しません。IsTuruKameMain 等でもリモートメールの
ウィンドウかどうかの判定できないようですが、何か妙手は有るでしょうか?

[ ]
RE:06468 リモートメール・ウィンドウの見No.06470
秀まるお さん 03/03/12 16:35
 
 リモートメールコマンドを実行して出てくるダイアログボックス中の秀丸エ
ディタ相当部品中でマクロ実行してるかどうか判定しようとしてるのでしょう
か?

 だとしたら、偶然ではありますが、IsTuruKameGrep関数の返り値で判断できる
ようです。リモートメールの場合でも1が返るはずです。

 ついでに1つバグ報告。IsTuruKameGrep関数が、マクロヘルプのキーワード検
索に出てこないようです。これはこれで直します。

[ ]
RE:06470 リモートメール・ウィンドウの見No.06472
ひろ さん 03/03/12 17:29
 
 秀まるおさん今日は、ひろです。
>  リモートメールコマンドを実行して出てくるダイアログボックス中の秀丸エ
> ディタ相当部品中でマクロ実行してるかどうか判定しようとしてるのでしょう
> か?
 そうです。
 そして本体で動かしたいので、
>   #main = dllfunc("MainWnd");
>   if(!#main)#main =findwindowclass("TuruKameFrame");
で本体を探しているのですが、
>   $folder = dllfuncstr("ExecAt", #main, "CurrentFolder");
としても「Remote」になるなど、想定外の動きを各所でしていて困っています。
一か所適当な場所に、message 文を入れてやると、マクロの制御が本体に移る
のですが....。

[ ]
RE:06472 リモートメール・ウィンドウの見No.06475
秀まるお さん 03/03/12 17:45
 
 リモートメールのダイアログボックス上でマクロ実行することはまったく想定
してないし、それについてどうこう聞かれても少々困ります。

>>   $folder = dllfuncstr("ExecAt", #main, "CurrentFolder");
>としても「Remote」になるなど、想定外の動きを各所でしていて困っています。

 僕も予想できないですけど、ExecAtはそもそも別スレッドの秀丸相当エディタ
上で何かさせる物なので、リモートメールのダイアログボックス上から鶴亀メー
ル本体ウィンドウ上で実行させるようなことは出来ないんじゃないかと思います。

 あと、「検索して一覧作成」の上でマクロ実行するための例外処理なんかが動
いているかもしれないし、実際どうなるのかよく分かりません。

 リモートメールのダイアログボックス上で何かマクロを実行しようとしてエ
ラーを出したいっていうのなら分かりますが、そうじゃなくて何かやりたいって
話なら、やめてください。

[ ]
RE:06475 リモートメール・ウィンドウの見No.06476
ひろ さん 03/03/12 18:29
 
 秀まるおさん今日は、ひろです。
>  リモートメールのダイアログボックス上でマクロ実行することはまったく想定
> してないし、それについてどうこう聞かれても少々困ります。
 元々リモートメールのダイアログ上で、マクロを実行したいわけではありま
せん。
 何故こんな質問をしたのか順を追って説明します。
1.ライブラリにも登録している「配信予約マクロ」がエラーを起こすことが有
  る
2.どうやら「検索して一覧作成」や「リモートメール」が最前面でエラー
3.そういえば、送受信は本体で行われると思い、「受信が一段落した時」のマ
  クロは、(常駐を含め) 本体で実行されることを想定していた
4.何か対処が必要なので、「検索して一覧作成」は別ウィンドウでハンドルが
  異なるので
  > $folder = dllfuncstr("ExecAt", #main, "CurrentFolder");
  の要領で、必ず本体上で動作するようにした
5.「リモートメール」も同じだと思っていたが、違うらしい
  > $folder = dllfuncstr("ExecAt", #main, "CurrentFolder");
  の返り値が「Remote」ということは、「リモートメール」は本体と同一ハン
  ドルなので、「リモートメール」の判定も出来ないしどうしよう
とここまで来て、途方にくれています。

[ ]
RE:06476 リモートメール・ウィンドウの見No.06477
秀まるお さん 03/03/12 18:53
 
 ひろさん作の「配信予約マクロ」は、受信が一段落した時に実行されるだけで
すよね。だとしたら、受信が一段落した状態でリモートメールのダイアログボッ
クスが出ていることはありえないんじゃないでしょうか。

>4.何か対処が必要なので、「検索して一覧作成」は別ウィンドウでハンドルが
>  異なるので
>  > $folder = dllfuncstr("ExecAt", #main, "CurrentFolder");
>  の要領で、必ず本体上で動作するようにした

 検索して一覧作成のウィンドウが出ていたとしても、「受信が一段落した時」
に登録したマクロは必ず鶴亀メール本体ウィンドウ上で実行されるはずでして、
勝手に検索結果ウィンドウ上でマクロが実行されることがあるなら、それはそれ
でバグとして調べます。

[ ]
RE:06476 リモートメール・ウィンドウの見No.06478
秀まるお さん 03/03/12 18:55
 
 今、「message "test.mac";」というマクロを受信後に実行するよう指定して
おいて、リモートメール一覧から何かメールを受信する動作をしたら、マクロ実
行後に鶴亀メール本体ウィンドウが操作不能になる症状が発生してしまいました。

 これはこれで直します。

[ ]
RE:06477 リモートメール・ウィンドウの見No.06479
ひろ さん 03/03/12 19:25
 
 秀まるおさん今日は、ひろです。
>  検索して一覧作成のウィンドウが出ていたとしても、「受信が一段落した時」
> に登録したマクロは必ず鶴亀メール本体ウィンドウ上で実行されるはずでして、
> 勝手に検索結果ウィンドウ上でマクロが実行されることがあるなら、それはそれ
> でバグとして調べます。
 手元で、
message str(dllfunc("IsTuruKameMain"));
というマクロを「受信が一段落した時」に指定したところ、「検索して一覧作
成」や「リモートメール」がアクティブの場合、0 になります。また
message str(dllfunc("IsTuruKameGrep"));
の場合、1 になります。エディタ・ウィンドウがアクティブの場合や、たとえ
「検索して一覧作成」や「リモートメール」が表示されていても、最前面でな
い場合は、期待通りの前者で 1、後者で 0 が表示されます。
 これを見た限り「検索して一覧作成」や「リモートメール」がアクティブだ
と、そのウィンドウ/ダイアログ上でマクロが実行されているようです。

 またもし「リモートメール」上でマクロが実行される事が致し方ないなら、
if(dllfunc("IsTuruKameGrep") == 1 &&
  dllfuncstr("CurrentFolder") == "Remote")
で「リモートメール」かどうか解りそうなので、リモートメールを閉じる方法
をお教え、若しくは用意して頂けないでしょうか?

[ ]
RE:06477 リモートメール・ウィンドウの見No.06480
ひろ さん 03/03/12 19:37
 
 秀まるおさん今日は、ひろです。
>  ひろさん作の「配信予約マクロ」は、受信が一段落した時に実行されるだけで
> すよね。だとしたら、受信が一段落した状態でリモートメールのダイアログボッ
> クスが出ていることはありえないんじゃないでしょうか。
 こちらについて書くことを忘れていました。
(1)リモートメールのダイアログがでた状態で、「定期的な受信」がされるこ
   とは無いのか? 有りますよね。
(2)上記のことが無いとしても、ダイアログが出た状態で常駐のメニューから
   受信は出来ます
というわけで、ダイアログが表示されていても、「受信が一段落した時」が実
行されることはあり得ます。

[ ]
RE:06480 リモートメール・ウィンドウの見No.06482
秀まるお さん 03/03/13 10:12
 
 もはや鶴亀メールのバグ状態であることが確実な情勢です。

>(1)リモートメールのダイアログがでた状態で、「定期的な受信」がされるこ
>   とは無いのか? 有りますよね。

 鶴亀メール本体上で何かダイアログボックスを出している最中は、定期的な受
信は動作しない作りにしたつもりです。具体的には、定期受信の時間がやってき
ても、その時点で何かダイアログボックスが出ていたら、定期受信の動作を20
秒後に延期する処理をしています。

>(2)上記のことが無いとしても、ダイアログが出た状態で常駐のメニューから
>   受信は出来ます

 これが出来てしまうことはまずいです。このようなケースは全部バグとして修
正させていただきます。

 あと、検索結果のウィンドウが出ていたりしても、とにかく「受信が一段落し
た時」のマクロは絶対に鶴亀メール本体上で実行するように修正します。なので、
ひろさん側のマクロでは特にややこしい処理をしないでおいて、次のV2.50にて
一度動作確認して欲しいです。

 少々お待ちを。

[ ]
RE:06482 リモートメール・ウィンドウの見No.06483
ひろ さん 03/03/13 12:04
 
 秀まるおさん今日は、ひろです。
>  鶴亀メール本体上で何かダイアログボックスを出している最中は、定期的な受
> 信は動作しない作りにしたつもりです。
 そうだったんですね。全く知りませんでした。
> >(2)上記のことが無いとしても、ダイアログが出た状態で常駐のメニューから
> >   受信は出来ます
>
>  これが出来てしまうことはまずいです。このようなケースは全部バグとして修
> 正させていただきます。
 宜しくお願いします。

>  あと、検索結果のウィンドウが出ていたりしても、とにかく「受信が一段落し
> た時」のマクロは絶対に鶴亀メール本体上で実行するように修正します。なので、
> ひろさん側のマクロでは特にややこしい処理をしないでおいて、次のV2.50にて
> 一度動作確認して欲しいです。
 了解しました。

[ ]