CreateProcess命令行参数

时间:2017-01-04 13:18:50

标签: c++ winapi createprocess

我使用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);
  1. 如何更改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); 的一部分?

  2. 如何从多个TEXT("")创建命令行?

  3. 如果这些选项都不可用,可以做些什么?我想要一个UI按钮,用不同的命令行参数调用TEXT("")

1 个答案:

答案 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);

无论哪种方式,您都可以根据需要替换任何单个子字符串。