box系のコマンドの仕様について
statusboxはモードレスダイアログで実装してあり、statusbox以外はモーダルダイアログで 実装されているため、おっしゃるような動作となっています。
>いわもとさん・永田さん 全boxをモードレスダイアログで実装するのは、インパクトが大きいと思うのですが、 なにかやりようはあるでしょうかね。
単にモードレスダイアログにすると、今までの動作を前提にしているマクロがおかしな動きをするでしょうから、追加フラグで動作を変えるようにすべきと思います。インパクトが大きいというのは、そのような変更(あるいは調整)をするのは作業量が多いという意味ですか?変更により今まで通り動かない可能性が高いという意味ですか?
ところで、マクロのメインダイアログがbox系のモーダルダイアログを表示しているのに、VTウィンドウがブロックされるんですか?そこがよく分かっていないので、話しに付いていけていません。
コメントいただき、ありがとうございます。 モーダルやモードレスといった言葉も知らないレベルでよくわからない点もあるのですが、mayaさんがVTウィンドウのブロックについて書かれていたため、再度確認してみました。 私の作ったマクロでは、VTウィンドウも選択できメニューのコマンドも実行できますが、最初の発言に書いたようにログの更新は止まってしまいます。ただし、シンプルなマクロを作って試してみたところ、この事象は発生しませんでした。何か条件があると思いますので、切り分けてご報告します。
ごめんなさい。調べた結果、私の理解不足でした。 マクロを添付しましたが、setsync 1で同期をとった場合に発生します。 2文字程度入力すると、そこでログの更新がとまります。setsync 0なら問題は発生しません。 ドキュメントにも必要なところだけ同期するように書いてあったのですが、文字をwaitすること多いので、切り替えずに作ってしまっていました。
setsync を有効にしている場合、上記の動作は期待値です。 box系ダイアログを表示している間は、ttpmacro.exeが停止するため、合わせてttermpro.exe側も 一時停止します。
本件については、仕様通りなので、クローズといたします。
お世話になります。最近listboxコマンドが実装されて、自分のマクロに使わせていただいて便利さに喜んでいます。 ありがとうございます。
今まではboxを表示したままにすることが少なかったのであまり意識していなかったのですが、listboxをマクロ のメニューのように使いだして、下記の動作に気づきました。 statusboxを除くbox系コマンドは、すべてこのような動作をしているようです。
現状の動作
1. Tera termのウィンドウ上でのログの表示更新はストップする。
2. その間のログはバッファに蓄積されファイルには書き込まれない。
3. listboxで何らか項目を選択。
4. listboxが消えた直後に、バッファに蓄積されたログがファイルに記録される。
5. 4で記録されたログのTimestampはlistboxが消えた時刻となる。
期待する動作=
* 1のログの更新は継続
* 2ではログ出力時点でのTimestampをつけファイルに記録
* 3のlistbox表示中も、コンソール上でのコマンド入力ができる。
特に、Timestampがずれてしまうのが困っています。 なお、box系コマンドにTimeout属性を付けるまたは、closesboxコマンドが効くようになると、ある一定時間だけ処理を受け付けられるなど、さらに使いやすくなると思っています。 ご検討のほど、よろしくお願い申し上げます。
現状の動作は、Teraterm4.80、Windows8.1およびWindows7で確認しました。