栽萝卜

栽好多好多萝卜,留着吃

导航

向子进程传递参数的问题

先转,不整理。

 

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函数得命令行参数

4CreateProcess第一个参数是NULL,第二个参数指定子用程序和命令行参数,那程的命令行参数是第二个参数,不双引号。比如:

程:

CreateProcess(NULL, “c:\\test.exe -p“, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

程中,GetCommandLine得的命令行参数c:\\test.exe -p

 

5CreateProcess第一个参数指定子用程序路径和文件名,第二个参数NULL,那程的命令行参数是第一个参数,双引号。比如:

程:

CreateProcess(“c:\\test.exe“, NULL NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

程中,GetCommandLine得的命令行参数”c:\\test.exe“

 

6CreateProcess第一个参数指定子用程序路径和文件名,第二个参数为传递给程的参数,那程的命令行参数是第二个参数,不双引号。比如:

程:

CreateProcess(“c:\\test.exe“, ”-p“ NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

程中,GetCommandLine得的命令行参数-p

注意同第二点比,如果用lpCmdLine看命令行参数,没什都没有。但是将”-p”改成” -p”,用可以看到参数是-p,是不是很混乱?

posted on 2012-04-28 15:31  海飞丝叔叔  阅读(573)  评论(0编辑  收藏  举报