【发布时间】:2017-01-04 13:18:50
【问题描述】:
我在使用 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()。
【问题讨论】:
-
你为什么首先使用 TEXT。你真的需要支持Windows 98吗?为什么不与时俱进,使用Unicode?span>
-
cmdArgslistSetChannel必须是PWSTR但不是PWSTR*就像你的代码一样。所以你的问题是如何格式化字符串? -
看起来您只需要附加到您的字符串?那应该很容易。如果你检查documentation for CreateProcess,它不接受第二个参数中的字符串数组,所以不确定你在那里尝试什么。
-
我记得
CreateProcess的命令参数必须是可变的。更改文字是未定义的行为。所以,使用例如std::wstring. -
我再问你一次,你为什么用TEXT?您真的需要以 Windows 98 为目标吗?你为什么决定这样写代码?我的猜测是您在不理解的情况下复制了一个示例。下一步:获得这种理解。
标签: c++ winapi createprocess