上一篇讲了怎么启动控制台程序,并且指定输出流到控制台。
本篇还是以上一篇文章的win32项目来作为被启动的程序。
新建一个控制台程序:
有多种方式启动另外一个exe程序,不懂就百度一下吧。
void testConsole()
{
ShellExecute(NULL,"open","F://project//cpp//CppAllTest//Debug//CppWinTest.exe",NULL,NULL,SW_SHOWNORMAL);
}
就是这么简单。
带参数呢?ShellExecute的第4个参数就是要传递到exe程序的参数。
如何指定呢?参考:怎样用ShellExecute传递多个参数
测试一下参数对不对。
void testConsole()
{
ShellExecute(NULL,"open","F://project//cpp//CppAllTest//Debug//CppWinTest.exe","-console -enable",NULL,SW_SHOWNORMAL);
}
在Win32项目中判断一下console的下一个参数是否是enable,如果是那么才启动控制台程序。
修改Win32项目如下:
vector<string> args;
for (int i = 0; i < __argc; ++i)
{
wstring ws(__wargv[i]);
string s;
s.assign(ws.begin(), ws.end());
args.push_back(s);
cout<<s<<endl;
}
cout<<"args length"<<args.size()<<args[0]<<args[1]<<endl;
for (vector<string>::iterator it = args.begin();it!=args.end();++it)
{
string curArg = *it;
if (curArg.compare("-console") == 0)
{
++it;
string argValue = *it;
if(argValue.compare("enable") == 0){
cout<<"参数是enable"<<endl;
}else{
CloseWindow(_hwndConsole);
}
}
}
这里我为了看清楚我们传递过去的参数,就先打开了控制台程序,如果检测到console的下一个参数不是enab le,那么就关闭控制台程序。_hwndConsole就是上一篇中的控制台程序的句柄。
其实功能挺简单的,但是用途还是很大的。
在此记录一下。