0

我正在使用CreateProcess()控制台程序运行另一个控制台程序,但它与第一​​个程序在同一个窗口中运行。

STARTUPINFO sinfo;
PROCESS_INFORMATION pinfo;

LPSTR commandLine = " \"Cows and Bulls.exe\" test ";

ZeroMemory(&sinfo, sizeof(sinfo));
ZeroMemory(&pinfo, sizeof(pinfo));

if(!CreateProcess(0,commandLine, 0, 0, FALSE, 0, 0, 0, &sinfo, &pinfo))
    cout << "failed";

这是我的代码。我究竟做错了什么?当我添加一个

for(int i=0; true; i++)
{
    cout << i;
    Sleep(1000);
}

到第一个。然后它开始输出下一个数字的数字。

这就像两个程序合并了..我不想要那个,我想打开一个窗口。

PS我正在传递参数,是的,但如果我削减test结果是一样的。

4

1 回答 1

4

要给子进程一个新的控制台,您需要在调用CREATE_NEW_CONSOLE的参数中设置标志。此处的文档:http: //msdn.microsoft.com/en-gb/library/windows/desktop/ms682425 (v=vs.85).aspxdwCreationFlagsCreateProcess

于 2013-04-04T21:37:53.943 回答