ももらぼっ!にっき


2008年05月28日 [長年日記]

_ 自分の日記って。

読み直し始めると止まりませんね(^^;; 旅日記を読み直して、久しぶりに旅行に行きたくなったですよ。

で、見てみると、いろーんなものを放置してるんですねぇorz

作るだけ作って、そのままバージョンアップせずに放置しているソフトがたくさん。 W-ZERO3用ソフトなんか、手元に[es]もAd[es]もあるんだから、動作検証し直さないといけないはずなのに。 V友用ソフトって今どーなってるんだろう。

作るだけ作って、そのまま公開もせずに放置しているソフトも手元に転がってます。 caltとか、DirDiff高速・多機能化版とか、convunitとか。 どれも一応公開できるレベルにはなっているハズなんですけれど。

作りかけてそのまま放置しているソフトはもっと転がってます。 メールバックアップとか、メール送受信とか、Execシリーズの集約版とか、みいぽんとかとかとか。

こんな、投げっぱなしな私ですが、気付くと年単位でほっぽってたりしますが、サイト自身を止める気は無いハズですので、今後ともよろしくお付き合いくださいませ。

_ Poderosaで「最後の接続が切れたらアプリケーションを終了する」

SSHクライアントとしてPoderosaを使っているのだけど、ver3にはあった、「最後の接続が切れたらアプリケーションを終了する」オプションがver4では無くなってしまっています。 いつも、「exit」した後Alt+F4とかでアプリケーションを終了させているのだけれど、それはやっぱりめんどくさい。

ってことで、オープンソースなわけだし改造してみることにしました。

さくっとソースコードをダウンロードしてきて、VS2005で開いてデバッグ実行しようと、F5キーをポチッとすると、エラーが。クラスライブラリがスタートアップ プロジェクトになっていました。

見てみると、Executableプロジェクトがアプリケーションプロジェクトみたいですので、そいつをスタートアップ プロジェクトに変更して改めてデバッグ実行を開始。

…したのですが何もせずに終了してしまいました。

よくよく見てみると、普通にコンパイルしただけではdllが正しく配置されず、アプリケーションを起動しても何もせずに終了しちゃうようでした。UI部分までプラグイン機構を用いて作られているからのようです。

これじゃちょっとハックし辛いなーと思って出力パスを整えることにします。 とりあえず、全てのcsprojを開いて、bin\Debugとbin\Releaseを全て..\bin\Debugと..\bin\Releaseに変更してみたところ、無事デバッグ実行ができました。

…ってところで、時間がなくなったので続きは今度。

_ Poderosaで「最後の接続が切れたらアプリケーションを終了する」(2)

デバッグ実行しながら見ていくと、以下のパッチで望みのことが出来るみたいです。 面倒なのでオプション化とかはしてません。 自分の用途内ではうまくいくっぽいですが、使いこなしきれていないので他の環境でもうまくいくかは分かりません。

diff -ur poderosa410_1122_orig/TerminalSession/TerminalSession.cs poderosa410_1122/TerminalSession/TerminalSession.cs
--- poderosa410_1122_orig/TerminalSession/TerminalSession.cs	Wed Nov 22 10:50:54 2006
+++ poderosa410_1122/TerminalSession/TerminalSession.cs	Wed May 28 22:08:40 2008
@@ -139,7 +139,18 @@
         }
         private void HostCauseClose(string msg) {
             if(TerminalSessionsPlugin.Instance.TerminalEmulatorService.TerminalEmulatorOptions.CloseOnDisconnect)
+            {
                 _sessionHost.TerminateSession();
+
+                bool isWindowClose = true;
+                foreach (ISession session in TerminalSessionsPlugin.Instance.SessionManager.AllSessions) {
+                    isWindowClose = false;
+                    break;
+                }
+                if (isWindowClose) {
+                    this.OwnerWindow.CancellableClose();
+                }
+            }
             else {
                 IPoderosaMainWindow window = this.OwnerWindow;
                 window.DocumentTabFeature.Update(_terminal.IDocument);

しばらく使ってみて様子を見てみます。 バイナリ欲しい方がもし居ましたらご一報くださいな。 公開も考えておきます。