我该怎么做才能使用新的命令提示符窗口获取新进程?

时间:2010-08-25 06:39:19

标签: c++ windows file process console

我有两个控制台应用程序,第一个运行第二个:

1_first console application:

#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_second控制台应用程序名为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";
}

现在我的问题是两个应用程序都将使用相同的命令提示符窗口,我该怎么做才能使用单独的命令提示符?

1 个答案:

答案 0 :(得分:3)

当您致电CREATE_NEW_CONSOLE时,在流程创建标记(第六个参数)中传递CreateProcess

CreateProcessW(L"c:\\runme.exe",L"hello what's up?",NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&obj2,&obj1);

当您致电CreateProcessW时,您 想要在字符串上使用_TEXTCreateProcessW总是占用大字符串,因此您应该始终使用L前缀。 _TEXT(或_T)仅 用于CreateProcess(无后缀),因此根据您是否定义UNICODE,它可以从窄字符串更改为宽字符串/ _UNICODE。