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