溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

關(guān)于命令行參數(shù)

發(fā)布時(shí)間:2020-06-26 01:10:13 來源:網(wǎng)絡(luò) 閱讀:894 作者:boyka3721 欄目:開發(fā)技術(shù)

MFC命令行參數(shù)獲取

   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í)候就決定了



向AI問一下細(xì)節(jié)

免責(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)容。

AI