[英]CreateProcess command line arguments
使用CreateProcess()
时出现一些问题。
在此示例中, CreateProcess()
可以正常工作:
bSuccess = CreateProcess(
TEXT("os-util.exe"),
TEXT("os-util.exe 0x273e:0x0007:0x0100 --get-channel"), NULL, NULL, TRUE,
0,
NULL, szFileName, &si, &pi);
问题是我想修改我通过的命令行。 我尝试了一些解决方案,但是它们并没有给我带来任何好的结果。 例如:
LPWSTR cmdArgslistSetChannel[] = { TEXT("os-util.exe"), TEXT("0x273e:0x0007:0x0100"), TEXT("--set-channel"), TEXT("11") };
bSuccess = CreateProcess(
TEXT("os-util.exe"),
cmdArgslistSetChannel, NULL, NULL, TRUE,
0,
NULL, szFileName, &si, &pi);
我如何只更改TEXT("")
?
如何从多个TEXT("")
创建命令行?
如果这些选项都不可用,该怎么办? 我希望UI按钮按下以使用不同的命令行参数来调用CreateProcess()
。
使用std::wstring
和字符串连接来动态构建命令行,例如:
std::wstring cmdArgslistSetChannel = L"os-util.exe";
cmdArgslistSetChannel += L" 0x273e:0x0007:0x0100";
cmdArgslistSetChannel += L" --set-channel";
cmdArgslistSetChannel += L" 11";
bSuccess = CreateProcessW(
L"os-util.exe",
&cmdArgslistSetChannel[0],
NULL, NULL, TRUE, 0,
NULL, szFileName, &si, &pi);
或者,使用std::wostringstream
进行std::wostringstream
,然后从中检索std::wstring
:
std::wostringstream cmdArgslistSetChannel;
cmdArgslistSetChannel << L"os-util.exe";
cmdArgslistSetChannel << L" " << L"0x273e:0x0007:0x0100";
cmdArgslistSetChannel << L" " << L"--set-channel";
cmdArgslistSetChannel << L" " << L"11";
std::wstring cmd = cmdArgslistSetChannel.str();
bSuccess = CreateProcessW(
L"os-util.exe",
&cmd[0],
NULL, NULL, TRUE, 0,
NULL, szFileName, &si, &pi);
无论哪种方式,都可以根据需要替换任何单个子字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.