Язык какой?
На C# это гораздо проще делается, без Win32API вообще.
На плюсах смотрим структуру
STARTUPINFO typedef struct _STARTUPINFO {
DWORD cb;
LPTSTR lpReserved;
LPTSTR lpDesktop;
LPTSTR lpTitle;
DWORD dwX;
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
DWORD dwXCountChars;
DWORD dwYCountChars;
DWORD dwFillAttribute;
DWORD dwFlags;
WORD wShowWindow;
WORD cbReserved2;
LPBYTE lpReserved2;
HANDLE hStdInput;
HANDLE hStdOutput;
HANDLE hStdError;
} STARTUPINFO, *LPSTARTUPINFO;
В dwFlags обязательно устанавливаем STARTF_USESTDHANDLES
После вызова CreateProcess в hStdInput, hStdOutput и hStdError получают указатели на соответствующие потоки.