CreateProcess 命令行参数
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("")
创建命令行?
如果有 none 个选项可用,可以做什么?我想要一个 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::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);
无论哪种方式,您都可以根据需要替换任何单个子字符串。
我在使用 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("")
创建命令行?
如果有 none 个选项可用,可以做什么?我想要一个 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::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);
无论哪种方式,您都可以根据需要替换任何单个子字符串。