我使用AddressEntity
时遇到了一些问题。
在此示例中,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("")
创建命令行?
如果这些选项都不可用,可以做些什么?我想要一个UI按钮,用不同的命令行参数调用TEXT("")
。
答案 0 :(得分:2)
使用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::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);
无论哪种方式,您都可以根据需要替换任何单个子字符串。