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