diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 76ea25f..db19d1f 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -372,11 +372,11 @@
                              STD_OUTPUT_HANDLE, STD_ERROR_HANDLE
         from win32api import GetCurrentProcess, DuplicateHandle, \
                              GetModuleFileName, GetVersion
-        from win32con import DUPLICATE_SAME_ACCESS
+        from win32con import DUPLICATE_SAME_ACCESS, SW_HIDE
         from win32pipe import CreatePipe
         from win32process import CreateProcess, STARTUPINFO, \
                                  GetExitCodeProcess, STARTF_USESTDHANDLES, \
-                                 CREATE_NEW_CONSOLE
+                                 STARTF_USESHOWWINDOW, CREATE_NEW_CONSOLE
         from win32event import WaitForSingleObject, INFINITE, WAIT_OBJECT_0
     else:
         from _subprocess import *
@@ -673,7 +673,19 @@
             if not isinstance(args, types.StringTypes):
                 args = list2cmdline(args)
 
+            # Process startup details
+            default_startupinfo = STARTUPINFO()
+            if startupinfo == None:
+                startupinfo = default_startupinfo
+            if not None in (p2cread, c2pwrite, errwrite):
+                startupinfo.dwFlags |= STARTF_USESTDHANDLES
+                startupinfo.hStdInput = p2cread
+                startupinfo.hStdOutput = c2pwrite
+                startupinfo.hStdError = errwrite
+
             if shell:
+                default_startupinfo.dwFlags |= STARTF_USESHOWWINDOW
+                default_startupinfo.wShowWindow = SW_HIDE
                 comspec = os.environ.get("COMSPEC", "cmd.exe")
                 args = comspec + " /c " + args
                 if (GetVersion() >= 0x80000000L or
@@ -692,15 +704,6 @@
                     # kill children.
                     creationflags |= CREATE_NEW_CONSOLE
 
-            # Process startup details
-            if startupinfo == None:
-                startupinfo = STARTUPINFO()
-            if not None in (p2cread, c2pwrite, errwrite):
-                startupinfo.dwFlags |= STARTF_USESTDHANDLES
-                startupinfo.hStdInput = p2cread
-                startupinfo.hStdOutput = c2pwrite
-                startupinfo.hStdError = errwrite
-
             # Start the process
             try:
                 hp, ht, pid, tid = CreateProcess(executable, args,
diff --git a/PC/_subprocess.c b/PC/_subprocess.c
index 34073c6..61544c3 100644
--- a/PC/_subprocess.c
+++ b/PC/_subprocess.c
@@ -377,6 +377,7 @@
 
 	/* note: we only support a small subset of all SI attributes */
 	si.dwFlags = getint(startup_info, "dwFlags");
+	si.wShowWindow = getint(startup_info, "wShowWindow");
 	si.hStdInput = gethandle(startup_info, "hStdInput");
 	si.hStdOutput = gethandle(startup_info, "hStdOutput");
 	si.hStdError = gethandle(startup_info, "hStdError");
@@ -530,6 +531,8 @@
 	defint(d, "STD_ERROR_HANDLE", STD_ERROR_HANDLE);
 	defint(d, "DUPLICATE_SAME_ACCESS", DUPLICATE_SAME_ACCESS);
 	defint(d, "STARTF_USESTDHANDLES", STARTF_USESTDHANDLES);
+	defint(d, "STARTF_USESHOWWINDOW", STARTF_USESHOWWINDOW);
+	defint(d, "SW_HIDE", SW_HIDE);
 	defint(d, "INFINITE", INFINITE);
 	defint(d, "WAIT_OBJECT_0", WAIT_OBJECT_0);
 	defint(d, "CREATE_NEW_CONSOLE", CREATE_NEW_CONSOLE);
