我有两个控制台应用程序,第一个运行第二个:
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";
}
现在我的问题是两个应用程序都将使用相同的命令提示符窗口,我该怎么做才能使用单独的命令提示符?
答案 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
时,您 想要在字符串上使用_TEXT
。 CreateProcessW
总是占用大字符串,因此您应该始终使用L
前缀。 _TEXT
(或_T
)仅 用于CreateProcess
(无后缀),因此根据您是否定义UNICODE,它可以从窄字符串更改为宽字符串/ _UNICODE。