Hej,
natchniony (a może podjarany) wpisem na xion.log o tym by stworzyć sobie nakładkę na konsolę w windzie wziąłem się do pracy. Wygooglałem o poszukałem sobie informacji o pipe'each, o createprocess, a nawet przeczytałem kilka artykułów prosto z msdn'a typu "how to spawn console proces with redirect input/output". Wszystko ładnie pięknie by chodziło gdyby nie to, że proces, który tworzę, zaraz kończy swoje działanie. Najbardziej irytuje mnie to, że mimo przeglądnięcia wielu wątków i forów na ten temat, wydaje mi się jakby nikt inny poza mną nie miał tego problemu.
SECURITY_ATTRIBUTES atr;
atr.bInheritHandle = true;
atr.nLength = sizeof(SECURITY_ATTRIBUTES);
atr.lpSecurityDescriptor = NULL;
CreatePipe(&writein, &readin, &atr, 0);
CreatePipe(&writeout, &readout, &atr, 0);
PROCESS_INFORMATION pinfo;
STARTUPINFO sinfo;
ZeroMemory(&pinfo, sizeof(PROCESS_INFORMATION));
ZeroMemory(&sinfo, sizeof(STARTUPINFO));
sinfo.cb = sizeof(STARTUPINFO);
sinfo.hStdError = writeout;
sinfo.hStdOutput = writeout;
sinfo.hStdInput = readin;
sinfo.wShowWindow = SW_SHOWDEFAULT;
sinfo.dwFlags |= STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
BOOL create = CreateProcess(L"C:\\Windows\\System32\\cmd.exe", 0, 0, 0, true, CREATE_NEW_CONSOLE, 0, 0, &sinfo, &pinfo);
Z początku myślałem, że błąd jest dalej (nie wysyła i odpiera przez pipe) ale później dodałem parametry CREATE_NEW_CONSOLE i zobaczyłem jak okienko pojawia się i znika. Kombinowałem z różnymi parametrami ale widzę, że nie tędy droga.
Jak sprawić by stworzyć proces uruchamiający konsolę ta by można było z niej korzystać przez pipe'y?
-Jacek