您的位置:首页 > 运维架构 > Shell

c++ 调用外部程序exe-ShellExecuteEx

2015-06-02 10:29 513 查看
此方法最实用的调用exe.

#include <ShellAPI.h>

string file_path = s_run_dir+"\\ConsoleApplication1.exe";
if (!myfile.IsFileExist(file_path))
{
return 1;
}

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 2;
}


传给控制台程序参数

#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{

// 参数个数,第一个参数为可执行文件路径
int iParamCount = argc;
cout << "参数个数:" << iParamCount << endl;
for (int i = 0; i < iParamCount; i++)
{
cout << endl << "第" << i + 1 << "个参数:";
wprintf(argv[i]);
}

getchar();

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: