CreateProcess创建的子进程的命令行参数
2006-10-17 08:13

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 ,是不是很混乱?