用 CreateProcess 创 建的子 进 程所 获 得的命令行参数有以下几 种 情况: 1 .子 进 程中, WinMain 函数的第三个参数 lpCmdLine 表示的命令行参数中除去 应 用程序路径、文件名以及与参数相隔的空格等字符串后的内容。比如 父 进 程: CreateProcess(NULL, “c:\\test.exe -p“, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); 子 进 程中, lpCmdLine 参数 为 -p, 注意没有双引号
2 .如果通 过 lpCmdLine 参数 查 看命令行参数, 那 么 父 进 程 创 建子 进 程的 时 候,需要在子程序和参数中加上空格号。比如: 父 进 程: CreateProcess(“c:\\test.exe” , “ -p“, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); 子 进 程中, lpCmdLine 参数 为 -p ,没有空格了。
3 .如果想 获 得子 进 程的完整命令行参数, 调 用 GetCommandLine 函数。通常通 过 GetCommandLine 函数 获 得的命令行参数,是父 进 程 调 用 时 的完整参数。 CreateProcess(NULL, “c:\\test.exe -p“, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); 子 进 程中, GetCommandLine 返回的参数 为 c:\\test.exe -p, 注意没有双引号
以下情况都是 调 用 GetCommandLine 函数 获 得命令行参数 4 . CreateProcess 第一个参数是 NULL ,第二个参数指定子 应 用程序和命令行参数,那 么 子 进 程的命令行参数是第二个参数,不 带 双引号。比如: 父 进 程: CreateProcess(NULL, “c:\\test.exe -p“, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); 子 进 程中, GetCommandLine 获 得的命令行参数 为 c:\\test.exe -p
5 . CreateProcess 第一个参数指定子 应 用程序路径和文件名,第二个参数 为 NULL ,那 么 子 进 程的命令行参数是第一个参数, 带 双引号。 比如: 父 进 程: CreateProcess(“c:\\test.exe“, NULL , NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); 子 进 程中, GetCommandLine 获 得的命令行参数 为 ”c:\\test.exe“
6 . CreateProcess 第一个参数指定子 应 用程序路径和文件名,第二个参数 为传递给 子 进 程的参数,那 么 子 进 程的命令行参数是第二个参数,不 带 双引号。比如: 父 进 程: CreateProcess(“c:\\test.exe“, ”-p“ , NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); 子 进 程中, GetCommandLine 获 得的命令行参数 为 -p 。 此 处 注意同第二点比 较 ,如果用 lpCmdLine 查 看命令行参数,没什 么 都没有。但是将 ”-p” 改成 ” -p” ,用可以看到参数是 -p ,是不是很混乱? |