CreateProcess
有3个字符串参数:lpApplicationName
,lpCommandLine
,lpCurrentDirectory
。
我试图引用那个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的格式化并没有在上面的例子中显示我的反斜杠而我错过了它...现在已经修复了
答案 0 :(得分:3)
lpCommandLine
参数中的引号仅属于 。 lpApplicationName
和lpCurrentDirectory
都指定了文件名,因此不得包含嵌入式引号。
答案 1 :(得分:0)
首先,正如andlabs已经强调的那样,在C中,任何反斜杠都必须使用反斜杠进行转义。
说MS用于解释命令行参数的规则有点复杂和棘手
这里解释了它们:https://msdn.microsoft.com/en-us/library/a1y7w461.aspx
我甚至没有尝试添加额外的词......