此方法最实用的调用exe.
#include <ShellAPI.h>
string file_path = s_run_dir+"\\ConsoleApplication1.exe";
if (!myfile.IsFileExist(file_path))
{
return ;
} LPCWSTR lp_file_path = mystring.StringToLPCWSTR(file_path); SHELLEXECUTEINFO ShExecInfo; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = lp_file_path;
ShExecInfo.lpParameters = __T("D:\\a.txt D:\\b.txt D:\\c.txt");//传出去的参数
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL; BOOL b_ret=ShellExecuteEx(&ShExecInfo);
if (b_ret)
{
//等待调用启动的exe关闭,此处要设置成ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
WaitForSingleObject(ShExecInfo.hProcess, INFINITE); }
else
{
return ;
}
传给控制台程序参数
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{ // 参数个数,第一个参数为可执行文件路径
int iParamCount = argc;
cout << "参数个数:" << iParamCount << endl;
for (int i = ; i < iParamCount; i++)
{
cout << endl << "第" << i + << "个参数:";
wprintf(argv[i]);
} getchar(); return ;
}