gpt4 book ai didi

c++ - CreateProcess - lpApplicationName 与 lpCommandLine

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:53 26 4
gpt4 key购买 nike

我一直在使用 CreateProcess Win API,我想知道使用 lpApplicationName 和 lpCommandLine 作为参数与使用 lpCommandLine 之间的区别是什么?只是 lpCommandLine 参数。

例如:

CreateProcess(NULL, L"C:\Path\To\Notepad.exe", L"C:\Path\To\File\To\Load.txt"... etc
CreateProcess(NULL, NULL, L"C:\Path\To\Notepad.exe C:\Path\To\File\To\Load.txt"... etc

我假设第二个选项(仅使用 lpCommandLine)就像打开 cmd.exe 并运行该行一样。但是第一行呢,它加载应用程序并以不同方式指定命令行参数吗?

我已经查看了 API 的 MSDN 文档,但它似乎并没有真正详细说明发生了什么,参数可以包含什么,这很好,但我只是对我应该做什么感到困惑当有多种方法时才做。

请注意,我知道这两个示例行可能无法正常工作,因为 lpCommandLine 需要 LPTSTR,而不是 LPCTSTR。只是为了便于理解。

非常感谢您的帮助!

安迪

最佳答案

推荐的方法是同时使用这两个参数。如果您不指定 lpApplicationName,则让 Windows 解析 lpCommandLine 以找出应用程序名称。因为空格是文件名和目录名中的有效字符,这可能(在极少数情况下)导致错误的应用程序运行。 (例如,如果您有 c:\program.exe 并且您在 Windows XP 中启动 c:\program files 下的程序)。

在这两种情况下,您都应该在 lpCommandLine 中使用应用程序名称,因为它用于计算 Argv[0]。

关于c++ - CreateProcess - lpApplicationName 与 lpCommandLine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5705400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com