And*_*ndy 4 c++ parameters winapi process
我一直在使用 CreateProcess Win API,我想知道使用 lpApplicationName 和 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
Run Code Online (Sandbox Code Playgroud)
我认为仅使用 lpCommandLine 的第二个选项就像打开 cmd.exe 并运行该行。但是第一行呢?它是否加载应用程序并以不同的方式指定命令行参数?
我已经查看了 API 的 MSDN 文档,但它似乎并没有真正详细说明发生了什么,参数可以包含什么,这很好,但我只是对出现这种情况时应该做什么感到困惑有多种方法可以做到这一点。
请注意,我知道这两个示例行可能无法工作,因为 lpCommandLine 需要 LPTSTR,而不是 LPCTSTR。只是为了便于理解。
非常感谢您的帮助!
安迪
推荐的方法是使用这两个参数。如果您不指定 lpApplicationName,您将让 Windows 解析 lpCommandLine 来找出应用程序名称。由于空格是文件名和目录名中的有效字符,因此这可能(在极少数情况下)导致运行错误的应用程序。(例如,如果您有 c:\program.exe 并且在 Windows XP 中的 c:\program files 下启动程序)。
在这两种情况下,您都应该在 lpCommandLine 中使用应用程序名称,因为它用于计算 Argv[0]。
| 归档时间: |
|
| 查看次数: |
7401 次 |
| 最近记录: |