WinAPI CreateProcess和参数引用

时间:2016-03-14 16:32:48

标签: c++ c winapi

CreateProcess有3个字符串参数:lpApplicationNamelpCommandLinelpCurrentDirectory

我试图引用那个args并发现有时引号会破坏我的代码。 有人可以解释引用规则吗?

工作正常:

NULL
"\"C:\\some path\\my app.exe\" myparam1 myparam2"
"C:\\some path"

不起作用:

NULL
"\"C:\\some path\\my app.exe\" myparam1 myparam2"
"\"C:\\some path\""

工作正常:

"C:\\some path\\my app.exe"
"\"C:\\some path\\my app.exe\" myparam1 myparam2"
"C:\\some path"

不起作用:

"\"C:\\some path\\my app.exe\""
"\"C:\\some path\\my app.exe\" myparam1 myparam2"
"C:\\some path"

P.S。对不起,StackOverflow的格式化并没有在上面的例子中显示我的反斜杠而我错过了它...现在已经修复了

2 个答案:

答案 0 :(得分:3)

lpCommandLine参数中的引号仅属于 lpApplicationNamelpCurrentDirectory都指定了文件名,因此不得包含嵌入式引号。

答案 1 :(得分:0)

首先,正如andlabs已经强调的那样,在C中,任何反斜杠都必须使用反斜杠进行转义。
说MS用于解释命令行参数的规则有点复杂和棘手 这里解释了它们:https://msdn.microsoft.com/en-us/library/a1y7w461.aspx 我甚至没有尝试添加额外的词......