Telenetで再接続できない
手元の環境では「ネットワークケーブルを抜いた状態で接続」「サーバが上がっていないIPアドレスに接続」「サーバが上がっているIPアドレスの開いてないポートに接続」のどれをしても、resultは1になりました。
マクロはどのように開始していますか?ttlファイルをダブルクリックですか?接続していないTera Termの「Control」-「Macro」からファイルを選択ですか?
お世話になっています。 ttlダブルクリックで起動した場合と、WSHのJScriptから Run("cmd /c ttpmacro マクロファイル名");(PATHにttpmacroのパス設定済み)のどちらで起動しても 同様の事象となります。
使用しているマクロファイルを添付いたしますので、マクロ上問題ないかご確認お願いできるでしょうか。
添付したファイルの9行目のメッセージボックスが出ている段階で、ケーブルを抜き、11行目のconnectを実行(失敗)
その後、ケーブルを指してしばらくしてから、25行目のconnect処理で、result=0となってしまいます。 (19行目のtestlinkは、Tera Term自体が起動していないので、0になります)
お手数ですがよろしくお願いします。
maya への返信
手元の環境では「ネットワークケーブルを抜いた状態で接続」「サーバが上がっていないIPアドレスに接続」「サーバが上がっているIPアドレスの開いてないポートに接続」のどれをしても、resultは1になりました。
手元では AutoWinClose が on の時のみ再現しました。
AutoWinClose が off だと VT ウィンドウが閉じないので再現しないようです。
了解致しました。 AutoWinClose On で再度確認してみます。
失礼しました、OFFで再度確認してみます
doda への返信
手元では AutoWinClose が on の時のみ再現しました。 AutoWinClose が off だと VT ウィンドウが閉じないので再現しないようです。
うちは AutoWinClose = on ですが再現しません。うちとはなにか条件が違うのかもしれません。
最初のconnectのresultが0(Tera Term とリンクされていない)になるのが腑に落ちません。resultを0にしたあとttermproを立ち上げに行くはずだと思うのです。
2回目についてはTopicNameが初期化(前のDDE通信?が終了)されていないように見えますね。
お世話になっております。 無事、想定どおりの動作が出来ました。
AutoWinClose = On時の動作につきましては、本チケットを「機能リクエスト」に変更して残しておきます。
以上、よろしくお願いします。
状況が見えてきました。
maya への返信
最初のconnectのresultが0(Tera Term とリンクされていない)になるのが腑に落ちません。resultを0にしたあとttermproを立ち上げに行くはずだと思うのです。
ケーブルが刺さってないと一瞬 VT ウィンドウを表示した後にエラーダイアログ等を出さずに即終了します。
# 環境によって動作が違う?
これが原因で Tera Term がマクロ側に WM_USER_DDEREADY を投げた後、 マクロ側で DdeInitialize() を実行する前に Tera Term が終了し、 DdeInitialize() が失敗します。
2回目についてはTopicNameが初期化(前のDDE通信?が終了)されていないように見えますね。
DdeInitialize() が失敗した後に TopicName をクリアしていないので、リンクしていないのに TopicName が設定されているという状況になり、以降の connect で ttermpro.exe を起動できなくなっています。
とりあえずは OnDdeReady() で InitDDE() が失敗した時は TopicName をクリアする事で回避できそうです。
本当は Tera Term 側がエラーダイアログ等を出さずに終了する原因を調べる方がいいのでしょうけれど。
doda への返信
ケーブルが刺さってないと一瞬 VT ウィンドウを表示した後にエラーダイアログ等を出さずに即終了します。 # 環境によって動作が違う?
resultが0になるときと1になるときがありますが、すぐ終了するのが再現しました。
# ワイヤレスネットワーク接続(アダプタ)をうまく無効にできてなかったっぽいです。
本当は Tera Term 側がエラーダイアログ等を出さずに終了する原因を調べる方がいいのでしょうけれど。
マクロから実行されているからじゃないでしょうか。
同じ条件で Tera Term 単体で接続するとすぐに「Cannot connect the host」で終了します。CommStart() で作られるメッセージですが、表示するかは cv->NoMsg で決まります。
AcceptExecute() をみると CmdConnect のときに cv.NoMsg = 1 しています。
r5702 の修正で十分、と言えると思いますがいかがでしょうか。
Tera Term バージョン:4.84
connect時に、ネットワークケーブルを抜いた状態でコマンドを発行(result=0)後、ネットワークケーブルを接続し、 再度connectコマンドを発行しても、result=0となって接続できない。
ケーブル未接続時は、Tera Termが一瞬だけ表示されるがすぐ消えて、result=0でconnectコマンドが終了する。
なお、サーバー側でNATをdownさせた場合は、Tera Termは表示されるが、しばらく経ってからresult=0でconnectコマンドが終了する。(タイムアウト) サーバー側NATをupし、再度connectコマンドを発行すると、正常に接続される。