gpt4 book ai didi

c++ - 通过SHELLEXECUTEINFO将参数发送到.exe

转载 作者:行者123 更新时间:2023-12-01 15:10:55 25 4
gpt4 key购买 nike

我有一个带有2个参数的.exe。我需要在运行时在程序之间运行.exe文件。我已经使用ShellExecuteEx运行.exe文件,但是它没有使用参数。请帮助我哪里做错了。我在下面发布我的代码。

void StartProgram() {
SHELLEXECUTEINFO lpExecInfo;
lpExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
lpExecInfo.lpFile = L"F:\\EXEFolder\\RunMe.exe"; // Path to the .exe
lpExecInfo.fMask = SEE_MASK_DOENVSUBST | SEE_MASK_NOCLOSEPROCESS;
lpExecInfo.hwnd = NULL;
lpExecInfo.lpVerb = L"open"; // to open program
lpExecInfo.lpParameters = L"D:/input.csv" "F:/output.csv;"; //Arguments to be passed to .exe
lpExecInfo.lpDirectory = NULL;
lpExecInfo.nShow = SW_SHOW;
lpExecInfo.hInstApp = (HINSTANCE)SE_ERR_DDEFAIL;
ShellExecuteEx(&lpExecInfo);
//wait until a file is finished printing
if (lpExecInfo.hProcess != NULL)
{
::WaitForSingleObject(lpExecInfo.hProcess, INFINITE);
::CloseHandle(lpExecInfo.hProcess);
}
}

最佳答案

lpParameters成员是指向以空格分隔的参数字符串的指针,就像您在命令行环境中传递它们一样。

如果要将两个参数传递给程序,则可以这样做

lpExecInfo.lpParameters = L"argument1 argument2";

对于您的情况,应该像
lpExecInfo.lpParameters = L"D:/input.csv F:/output.csv";

为了解释您做错了什么,C++编译器有一个阶段,它将相邻的字符串文字连接成单个字符串。这意味着 L"D:/input.csv" "F:/output.csv;"将被串联到 L"D:/input.csvF:/output.csv;"中,后者是单个参数。

关于c++ - 通过SHELLEXECUTEINFO将参数发送到.exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60396791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com