gpt4 book ai didi

c++ - 为什么 ShellExecuteEx() 参数不起作用?

转载 作者:搜寻专家 更新时间:2023-10-31 02:23:38 28 4
gpt4 key购买 nike

假设我希望程序“C:\MyProgram.exe”以两个变量的参数运行。出现的问题是MyProgram只接收2个参数,而我明明传了3个参数。

我的代码:

SHELLEXECUTEINFO    ShExecInfo = { 0 };
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;

ShExecInfo.lpFile = T("\"C:\\MyProgram.exe\"");
ShExecInfo.lpParameters = _T("\"\"") _T(" ") + dir + file[i] + _T(" ") + dir + outputfile + _T(".TIFF");
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess, 1500);
if(GetExitCodeProcess(ShExecInfo.hProcess, &exitCode)){
MessageBox(_T("Conversion ") + file[i] + _T(" unsuccesful."), _T("TEST!"), MB_OK);
succes = 0;
}

因为 Internet 上关于 ShellExecuteEx 的可变参数的信息不多,我找不到对此的正确解释。

你们中有人知道如何解决这个问题吗?提前致谢!

最佳答案

仅仅是因为你的构造产生了一个临时对象并且存储了指向它的指针(我猜是一个 CString),但是当你启动程序时临时对象已经被销毁了。

auto str = _T("\"\"") _T(" ") + dir + file[i] + _T(" ") + dir + outputfile + _T(".TIFF");
ShExecInfo.lpParameters = str;
ShellExecuteEx(&ShExecInfo);

关于c++ - 为什么 ShellExecuteEx() 参数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29095329/

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