Store the global shell, progman and taskman windows in the server
(based on a patch by Martin Fuchs).

diff --git a/server/protocol.def b/server/protocol.def
index c895c26..e05d62b 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -2159,3 +2159,21 @@
 @END
 #define OPEN_TOKEN_THREAD   1
 #define OPEN_TOKEN_AS_SELF  2
+
+
+/* Set/get the global windows */
+@REQ(set_global_windows)
+    unsigned int   flags;               /* flags for fields to set (see below) */
+    user_handle_t  shell_window;        /* handle to the new shell window */
+    user_handle_t  shell_listview;      /* handle to the new shell listview window */
+    user_handle_t  progman_window;      /* handle to the new program manager window */
+    user_handle_t  taskman_window;      /* handle to the new task manager window */
+@REPLY
+    user_handle_t  old_shell_window;    /* handle to the shell window */
+    user_handle_t  old_shell_listview;  /* handle to the shell listview window */
+    user_handle_t  old_progman_window;  /* handle to the new program manager window */
+    user_handle_t  old_taskman_window;  /* handle to the new task manager window */
+@END
+#define SET_GLOBAL_SHELL_WINDOWS   0x01  /* set both main shell and listview windows */
+#define SET_GLOBAL_PROGMAN_WINDOW  0x02
+#define SET_GLOBAL_TASKMAN_WINDOW  0x04