我正在使用qt开发一个应用程序,其中我需要使用ShellExecuteEx来启动一个应用程序。我正在运行一个批处理文件,我需要向它传递两个参数。第一个参数只是一个字母,但第二个参数是一个路径,其中可能包含空格,也可能不包含空格。无论我做什么,它都无法逃脱空格。似乎包含任何转义的引号实际上会中断整个调用。我想问题出在符文上。我不是100%确定它是如何工作的,但它似乎正在复制调用并在一个升级的shell中运行它。看起来这个过程与添加的引文中断了。
这是我的ShellExecute代码。我已经将其简化为传入1个参数,但这仍然是错误的。
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = L"runas";
ShExecInfo.lpFile = L"test.bat";
ShExecInfo.lpParameters = L"\"test param\"";
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);这里的test.bat只是为了完整性。
@echo off
pause我得到的shell输出是。
'J:\Repositories\Qt' is not recognized as an internal or external command, operable program or batch file.脚本的路径为
J:\Repositories\Qt Project\debug\test.bat您可以看到,初始命令失败了,因为它弄乱了原始路径。
你知道如何在runas命令的参数中包含引号吗?
发布于 2015-09-17 22:57:48
尝试下一步:
ShExecInfo.lpFile = NULL;
ShExecInfo.lpParameters = L"test.bat \"test param\"";https://stackoverflow.com/questions/32631883
复制相似问题