- unregister task manager window at termination
Modified: trunk/reactos/subsys/system/explorer/Makefile
Modified: trunk/reactos/subsys/system/explorer/doc/TODO.txt
Modified: trunk/reactos/subsys/system/explorer/explorer.cpp
Modified: trunk/reactos/subsys/system/explorer/taskbar/taskbar.cpp

Modified: trunk/reactos/subsys/system/explorer/Makefile
--- trunk/reactos/subsys/system/explorer/Makefile	2005-03-19 09:37:24 UTC (rev 14189)
+++ trunk/reactos/subsys/system/explorer/Makefile	2005-03-19 09:37:46 UTC (rev 14190)
@@ -25,8 +25,8 @@
 TARGET_RCFLAGS := -D__USE_W32API -DWIN32 -D_ROS_ -D__WINDRES__
 
 TARGET_SDKLIBS := \
-	gdi32.a comctl32.a ole32.a oleaut32.a shell32.a expat.a \
-	notifyhook.a ws2_32.a msimg32.a user32.a
+	gdi32.a user32.a comctl32.a ole32.a oleaut32.a shell32.a expat.a \
+	notifyhook.a ws2_32.a msimg32.a
 
 TARGET_GCCLIBS := stdc++ uuid
 

Modified: trunk/reactos/subsys/system/explorer/doc/TODO.txt
--- trunk/reactos/subsys/system/explorer/doc/TODO.txt	2005-03-19 09:37:24 UTC (rev 14189)
+++ trunk/reactos/subsys/system/explorer/doc/TODO.txt	2005-03-19 09:37:46 UTC (rev 14190)
@@ -28,3 +28,9 @@
 
 - Search Programs -> performance monitor.msv -> Abort
 
+
+<Nonvo> Martin, I would have a whish concerning explorer: I often want to start a program and give it some parameters. So nice featue: "Start with param..."
+<tinus_> Nonvo: shell extension
+<m-fuchs> tinus: we should think about installing some default shell extensions
+<tinus_> m-fuchs: perhaps, but it'd be nice if they actually were shell extensions
+

Modified: trunk/reactos/subsys/system/explorer/explorer.cpp
--- trunk/reactos/subsys/system/explorer/explorer.cpp	2005-03-19 09:37:24 UTC (rev 14189)
+++ trunk/reactos/subsys/system/explorer/explorer.cpp	2005-03-19 09:37:46 UTC (rev 14190)
@@ -729,6 +729,14 @@
 				RegSetValueEx(hkey, TEXT("Shell"), 0, REG_SZ, (LPBYTE)path, l*sizeof(TCHAR));
 				RegCloseKey(hkey);
 			}
+
+			if (!RegOpenKey(HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"), &hkey)) {
+
+				///@todo save previous shell application in config file
+
+				RegSetValueEx(hkey, TEXT("Shell"), 0, REG_SZ, (LPBYTE)TEXT(""), l*sizeof(TCHAR));
+				RegCloseKey(hkey);
+			}
 		}
 
 		HWND shellWindow = GetShellWindow();

Modified: trunk/reactos/subsys/system/explorer/taskbar/taskbar.cpp
--- trunk/reactos/subsys/system/explorer/taskbar/taskbar.cpp	2005-03-19 09:37:24 UTC (rev 14189)
+++ trunk/reactos/subsys/system/explorer/taskbar/taskbar.cpp	2005-03-19 09:37:46 UTC (rev 14190)
@@ -32,6 +32,11 @@
 #include "traynotify.h"	// for NOTIFYAREA_WIDTH_DEF
 
 
+DynamicFct<BOOL (WINAPI*)(HWND hwnd)> g_SetTaskmanWindow(TEXT("user32"), "SetTaskmanWindow");
+DynamicFct<BOOL (WINAPI*)(HWND hwnd)> g_RegisterShellHookWindow(TEXT("user32"), "RegisterShellHookWindow");
+DynamicFct<BOOL (WINAPI*)(HWND hwnd)> g_DeregisterShellHookWindow(TEXT("user32"), "DeregisterShellHookWindow");
+
+
 TaskBarEntry::TaskBarEntry()
 {
 	_id = 0;
@@ -61,12 +66,13 @@
 
 TaskBar::~TaskBar()
 {
-	DynamicFct<BOOL (WINAPI*)(HWND hwnd)> DeregisterShellHookWindow(TEXT("user32"), "DeregisterShellHookWindow");
-
-	if (DeregisterShellHookWindow)
-		(*DeregisterShellHookWindow)(_hwnd);
+	if (g_DeregisterShellHookWindow)
+		(*g_DeregisterShellHookWindow)(_hwnd);
 	else
 		KillTimer(_hwnd, 0);
+
+	if (g_SetTaskmanWindow)
+		(*g_SetTaskmanWindow)(0);
 }
 
 HWND TaskBar::Create(HWND hwndParent)
@@ -100,15 +106,13 @@
 	_next_id = IDC_FIRST_APP;
 
 	 // register ourselved as task manager window to make the following call to RegisterShellHookWindow working
-	DynamicFct<BOOL (WINAPI*)(HWND hwnd)> SetTaskmanWindow(TEXT("user32"), "SetTaskmanWindow");
-	if (SetTaskmanWindow)
-		(*SetTaskmanWindow)(_hwnd);
+	if (g_SetTaskmanWindow)
+		(*g_SetTaskmanWindow)(_hwnd);
 
-	DynamicFct<BOOL (WINAPI*)(HWND hwnd)> RegisterShellHookWindow(TEXT("user32"), "RegisterShellHookWindow");
-	if (RegisterShellHookWindow) {
+	if (g_RegisterShellHookWindow) {
 		LOG(TEXT("Using shell hooks for notification of shell events."));
 
-		(*RegisterShellHookWindow)(_hwnd);
+		(*g_RegisterShellHookWindow)(_hwnd);
 	} else {
 		LOG(TEXT("Shell hooks not available."));
 		SetTimer(_hwnd, 0, 200, NULL);
@@ -139,23 +143,7 @@
 			break;	// avoid displaying context menu for application button _and_ desktop bar at the same time
 
 		goto def;}
-/*
-//#define PM_SHELLHOOK_NOTIFY		(WM_APP+0x10)
 
-	  case PM_SHELLHOOK_NOTIFY: {
-		int code = lparam;
-
-		switch(code) {
-		  case HSHELL_WINDOWCREATED:
-		  case HSHELL_WINDOWDESTROYED:
-		  case HSHELL_WINDOWACTIVATED:
-		  case HSHELL_WINDOWREPLACED:
-			Refresh();
-			break;
-		}
-		Refresh();
-		break;}
-*/
 	  case PM_GET_LAST_ACTIVE:
 		return (LRESULT)(HWND)_last_foreground_wnd;