【发布时间】:2011-04-18 15:40:48
【问题描述】:
我一直在使用 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。只是为了便于理解。
非常感谢您的帮助!
安迪
【问题讨论】:
-
是什么让你说 MSDN 没有详细解释发生了什么?它几乎不能更详细。简而言之,lpApplicationName 或多或少完全符合您的要求,仅此而已,而 lpCommandLine 增加了很多解释和魔法(附加扩展、搜索 PATH 等)。而且,正如约翰所说,通常最好的方法是同时使用两者。
-
好吧,也许有一些细节我第一次没看懂/错过了,但我还是觉得有点模棱两可。
标签: c++ winapi parameters process