您好,登錄后才能下訂單哦!
int nNum= 0;
LPWSTR* lp=CommandLineToArgvW(GetCommandLineW(), &nNum);
ASSERT(0);
for (int i = 0;i<nNum;i++)
{
AfxMessageBox(lp[i]);
}
1.VS,F(xiàn)5運(yùn)行
1個(gè)參數(shù) 123
p[0], F:\svn\tey\aa\aa\..\aa\aa.exe
p[1], 123
2.雙擊啟動(dòng)
1個(gè)參數(shù) 123
p[0], F:\svn\tey\bin\aa\aa.exe
p[1], 123
3.命令行啟動(dòng)
這里傳幾個(gè)參數(shù),那邊就得到幾個(gè)參數(shù)
aa.exe 123
p[0], aa.exe
p[1], 123
c:\aa.exe 123
p[0], c:\aa.exe
p[1], 123
4.批處理啟動(dòng) aa.bat
aa.exe 123
p[0], aa.exe
p[1], 123
5.ShellExecute 啟動(dòng)
1個(gè)參數(shù) 123
p[0], F:\svn\tey\bin\aa\aa.exe
p[1], 123
6.CreateProcess("aa.exe", "123")
p[0], 123
總結(jié):除了CreateProcess以外,其它的第一個(gè)參數(shù)都是可執(zhí)行文件全路徑
當(dāng)用CreateProcess的方式創(chuàng)建exe的時(shí)候,沒有默認(rèn)的第1個(gè)參數(shù),所以命令行參數(shù)都需要從第2個(gè)參數(shù)傳入
CreateProcess只認(rèn)第1個(gè)參數(shù),以啟動(dòng)指定的進(jìn)程,也就是說CreateProcess("", "aa.exe -123"...) 是無法啟動(dòng)進(jìn)程的
CreateProcess("aa.exe", "-123"...)
對(duì)應(yīng)的參數(shù)為:
1:-123
任何一種方式,默認(rèn)的分隔符都為空格,所以如果你要傳路徑,路徑中不要有空格,如果你保證不了,可以在參數(shù)兩頭加引號(hào),如: test322.exe "c:\aa bb\cc dd"
CreateProcess("aa.exe", "c:\aa bb\cc dd"...) 得到的參數(shù)如下
1:c:\aa
2:bb\cc
3:dd
CreateProcess("aa.exe", "“c:\aa bb\1” “c:\aa bb\2”"...) 得到的參數(shù)如下
1:c:\aa bb\1
2:c:\aa bb\2
當(dāng)你在命令提示符下輸入"aa.exe -999"時(shí),操作系統(tǒng)會(huì)有一個(gè)編碼轉(zhuǎn)換的過程,也就是,你不需要關(guān)心aa.exe是ANSI編碼還是UNICODE編碼,它會(huì)自動(dòng)輪換成你需要的類型,這個(gè)在你編輯aa.exe的時(shí)候就決定了
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。