[Ttssh2-commit] [5611] #33953: TeraTerm Menuがタスクトレイに表示されないことがある

アーカイブの一覧に戻る

svnno****@sourc***** svnno****@sourc*****
2014年 6月 21日 (土) 18:38:32 JST


Revision: 5611
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5611
Author:   yutakapon
Date:     2014-06-21 18:38:32 +0900 (Sat, 21 Jun 2014)
Log Message:
-----------
#33953: TeraTerm Menuがタスクトレイに表示されないことがある

シェル登録処理のリトライを追加した。
リトライは1秒間隔で最大3回。無限リトライにすると、本当にシェルがストールしている場合に、
アプリケーションもストールするのを回避するため。

Ticket Links:
------------
    http://sourceforge.jp/projects/ttssh2/tracker/detail/33953

Modified Paths:
--------------
    trunk/ttpmenu/ttpmenu.cpp

-------------- next part --------------
Modified: trunk/ttpmenu/ttpmenu.cpp
===================================================================
--- trunk/ttpmenu/ttpmenu.cpp	2014-06-17 15:37:55 UTC (rev 5610)
+++ trunk/ttpmenu/ttpmenu.cpp	2014-06-21 09:38:32 UTC (rev 5611)
@@ -990,6 +990,9 @@
 BOOL SetTaskTray(HWND hWnd, DWORD dwMessage)
 {
 	NOTIFYICONDATA	nid;
+	int i;
+	BOOL ret;
+	DWORD ecode;
 
 	memset(&nid, 0, sizeof(nid));
 	nid.cbSize				= sizeof(nid);
@@ -1000,8 +1003,34 @@
 	nid.hIcon				= g_hIconSmall;
 	lstrcpy(nid.szTip, "TeraTerm Menu");
 
-	::Shell_NotifyIcon(dwMessage, &nid);
+	/* Shell_NotifyIcon\x8A֐\x94\x82́A\x83V\x83F\x83\x8B\x82ւ̓o\x98^\x82\xAA4\x95b\x88ȓ\xE0\x82Ɋ\xAE\x97\xB9\x82\xB5\x82Ȃ\xA2\x82ƃG\x83\x89\x81[\x82ƌ\xA9\x82Ȃ\xB7\x82\xBD\x82߁A
+	 * \x83\x8A\x83g\x83\x89\x83C\x8F\x88\x97\x9D\x82\xF0\x92lj\xC1\x82\xB7\x82\xE9\x81B
+	 *
+	 * Microsoft\x8C\x{18EB8F}\xEE\x95\xF1\x82ɂ\xE6\x82\xE9\x82ƁAWindowsXP\x81`7\x82܂ł\xAA\x93\x96\x8AY\x8Ed\x97l\x82̖͗l\x81BWindows8/8.1\x82ł́A
+	 * \x83\x8A\x83g\x83\x89\x83C\x82͕s\x97v\x82Ǝv\x82\xED\x82\xEA\x82邪\x81A\x8B\xA4\x92ʏ\x88\x92u\x82Ƃ\xB7\x82\xE9\x81B
+	 * cf. http://support.microsoft.com/kb/418138/ja
+	 * (2014.6.21 yutaka)
+	 */
+	if (dwMessage == NIM_ADD) {
+		for (i = 0 ; i < 3 ; i++) {
+			ret = ::Shell_NotifyIcon(dwMessage, &nid);
+			ecode = GetLastError();
+			if (ret == FALSE && ecode == ERROR_TIMEOUT) {
+				Sleep(1000);
+				ret = ::Shell_NotifyIcon(NIM_MODIFY, &nid);
+				if (ret == TRUE)
+					break;
 
+			} else {
+				break;
+			}
+		}
+
+	} else {
+		::Shell_NotifyIcon(dwMessage, &nid);
+
+	}
+
 	return TRUE;
 }
 



Ttssh2-commit メーリングリストの案内
アーカイブの一覧に戻る