带参数启动另外一个exe程序

上一篇讲了怎么启动控制台程序,并且指定输出流到控制台。

本篇还是以上一篇文章的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就是上一篇中的控制台程序的句柄。


其实功能挺简单的,但是用途还是很大的。

在此记录一下。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值