C++ 如何用CreateProcess函数调用exe程序并传入多个参数
时间: 2024-10-15 16:07:01 浏览: 66
C++ 调用带参数EXE
3星 · 编辑精心推荐
在C++中,`CreateProcess`函数通常用于在操作系统级别启动一个新的进程,包括运行.exe文件。这是Windows API的一部分,属于`Windows.h`头文件。以下是一个基本的示例,展示如何使用`CreateProcess`函数来运行一个.exe程序,并传递参数:
```cpp
#include <windows.h>
std::wstring commandLine = L"C:\\path\\to\\your\\executable.exe"; // 替换为实际的.exe路径
std::vector<std::wstring> arguments = {L"param1", L"param2", L"param3"}; // 你的参数列表
STARTUPINFO si = {};
si.cb = sizeof(si);
si.lpReserved = nullptr;
si.lpDesktop = nullptr;
si.lpTitle = L""; // 程序标题,可选
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USECOUNTCHARS;
PROCESS_INFORMATION pi = {};
if (CreateProcess(commandLine.c_str(), // 程序命令行字符串
const_cast<wchar_t*>(arguments[0].c_str()), // 第一个参数(其他参数同理)
nullptr, // 父进程句柄
nullptr, // 子进程权限
FALSE, // 不继承父进程的句柄
CREATE_NO_WINDOW, // 创建无窗口进程
nullptr, // 初始环境变量
NULL, // 起始目录
&si, // 启动信息指针
&pi)) // 进程信息指针
{
// 进程已成功创建,可以对pi.hProcess进行进一步操作,如等待其结束
CloseHandle(pi.hThread); // 关闭线程句柄
WaitForSingleObject(pi.hProcess, INFINITE); // 等待进程结束
CloseHandle(pi.hProcess); // 关闭进程句柄
}
else
{
// 创建过程失败,处理错误
}
阅读全文