我有两个控制台应用程序,第一个运行第二个:
1_first控制台应用程序:
#include <Tchar.h> #include <windows.h> #include <iostream> using namespace std; void main(){ PROCESS_INFORMATION obj1; memset(&obj1,0,sizeof(PROCESS_INFORMATION)); STARTUPINFOW obj2; memset(&obj2,0,sizeof(STARTUPINFOW)); obj2.cb=sizeof(STARTUPINFOW); CreateProcessW(_TEXT("c:\\runme.exe"),_TEXT("hello what's up?"),NULL,NULL,FALSE,NULL,NULL,NULL,&obj2,&obj1); }
2_第二个名为runme.exe的控制台应用程序:
#include <stdio.h> #include <iostream> using namespace std; int main(int argc,char * * argv){ if (argc>0) for (int i=0;i<argc;i++) cout <<"**->**"<<argv[i]<<"\n"; }
现在我的问题是,这两个应用程序将使用相同的命令提示符窗口,我该怎么做,让他们使用单独的?
当您调用CreateProcess
时,在进程创建标志(第六个参数)中传递CREATE_NEW_CONSOLE
。
CreateProcessW(L"c:\\runme.exe",L"hello what's up?",NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&obj2,&obj1);
当你调用CreateProcessW
你不想在字符串上使用_TEXT
。 CreateProcessW
总是需要宽字符串,所以你应该总是在它们上使用一个L
前缀。 _TEXT
(或_T
) 仅用于CreateProcess
(无后缀),所以根据是否定义UNICODE / _UNICODE,它可以从窄字符串变为宽字符串。