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