- case '"':
- insideQuotes = !insideQuotes;
- // fall through
-
- default:
- commandName += *pc;
- continue; // skip the next break
- }
-
- // only reached for space not inside quotes
- break;
- }
- wxString commandArgs = pc;
-
- wxWindow *winTop = wxTheApp->GetTopWindow();
- HWND hwndTop = (HWND)(winTop ? winTop->GetHWND() : 0);
-
- HANDLE result;
-#ifdef __GNUWIN32__
- result = ShellExecute(hwndTop,
- (const wchar_t)"open",
- (const wchar_t)commandName,
- (const wchar_t)commandArgs,
- (const wchar_t)NULL,
- SW_SHOWNORMAL);
-#else // !GNUWIN32
- result = ShellExecute(hwndTop, "open", commandName,
- commandArgs, NULL, SW_SHOWNORMAL);
-#endif // GNUWIN32
-
- if ( ((long)result) <= 32 )
- wxLogSysError(_("Can't execute command '%s'"), command.c_str());
-
- return result;
-#else // 1
-
- HANDLE hpipeRead[2];
- HANDLE hpipeWrite[2];
- HANDLE hStdIn = INVALID_HANDLE_VALUE;
- HANDLE hStdOut = INVALID_HANDLE_VALUE;
-
- // we need to inherit handles in the child process if we want to redirect
- // its IO
- BOOL inheritHandles = FALSE;
+ // the IO redirection is only supported with wxUSE_STREAMS
+ BOOL redirect = FALSE;
+#if wxUSE_STREAMS
+ // the first elements are reading ends, the second are the writing ones
+ HANDLE hpipeStdin[2],
+ hpipeStdout[2],
+ hpipeStderr[2];
+ HANDLE hpipeStdinWrite = INVALID_HANDLE_VALUE;