我們從寫第一個 HelloWorld 程序時,就開始使用 main 函數(shù)。后來學(xué)到 Windows 編程, 又開始使用 WinMain 函數(shù)。我們都知道每個程序都得有個主函數(shù)入口。今天就簡單介紹一下我們使用主函數(shù)時給它傳入命令參數(shù)。很早以前就想寫了,但是一直沒有找到合適的地方。今天碰到項目中的一個問題,便想起了這塊兒。。
我們通常寫控制臺 main 都沒有帶參數(shù),因為我們很少用到。這個命令參數(shù)的功能呢就會涉及到里面的參數(shù)。
可以這樣定義:
int main( int argc, char* argv[], char* envp[] )
{
}
通常我們寫參數(shù)很少寫 3 個參數(shù),一般只寫兩個。那這三個分別代表什么意思呢?
argc: 表示從命令行傳遞給程序的命令參數(shù)個數(shù)。
argv: 是一個指針數(shù)組,每個元素存的是每個命令參數(shù)字符串的首地址,也可以理解成二維數(shù)組,或者定義成 char** argv 。
在 DOS 3.x 版本中, argv[ 0 ] 為程序運行的全路徑名。
在以前的版本中, argv[ 0 ] 為空串。
argv[ 1 ] 為第一個命令參數(shù), argv[ 2 ] 位第二個命令參數(shù)。。。。。
envp: 表示環(huán)境變量。
要使用命令參數(shù)的話,有兩種方法:
一是,在 VC 工程屬性 -> 屬性配置 -> 調(diào)試 右邊的命令參數(shù)中寫入你要傳給主函數(shù)的命令參數(shù)。多個參數(shù)以空格間隔。
二是,當(dāng)你編譯出 exe 后,在 cmd DOS 命令行里面 CD 到你 EXE 的目錄,輸入命令參數(shù):
E:/Test> test.exe 111 222 333 紅色的部分表示你的命令參數(shù)。這樣在主函數(shù)的第二個參數(shù)的第 2 個元素就是 111 , 第三個元素就是 222 , 第四個元素就是 333 。 為了直觀可以把這些參數(shù)的內(nèi)容給打印出來。
再看我們在寫 windows 程序的時候,用的是 WinMain 主函數(shù)。 這個函數(shù)的第三個參數(shù)是:
LPSTR lpCmdLine (命令參數(shù))。 我們也可以通過上面講的兩種方法傳遞給 WinMain 命令
參數(shù)。這里在介紹另外一種應(yīng)用:
基本上每個游戲客戶端都有一個登陸器(更新程序),用于在啟動游戲的時候檢查是否需要
更新和進(jìn)行更新的功能。有的時候可能我們沒有去運行更新程序,而是直接運行游戲的客戶
端,這時會提示我們“請運行 XXXX.exe (更新程序)來啟動游戲”之類的信息。這樣就使
得玩家必須先運行更新程序使的客戶端處于最新。
就這種應(yīng)用我們就可以通過命令參數(shù)來實現(xiàn)(可能不是所有的游戲都是這種方式)。在編寫
游戲客戶端的時候,我們可以在工程屬性里面默認(rèn)的填寫一個命令參數(shù)。我們在 WinMain
函數(shù)開始的時候就接收這個參數(shù),判斷是不是我們設(shè)定的參數(shù),如果是就啟動。不是就提示
“請運行 XXXX.exe (更新程序)來啟動游戲”之類的信息。從而就實現(xiàn)了這一功能。在這
里要提到第三種傳命令行參數(shù)的方法:
我們可以創(chuàng)建一個游戲客戶端 exe 的快截方式,然后在快截方式上面右鍵 -> 屬性:
在目標(biāo)后面添加你要傳給 WinMain 的命令參數(shù)。同樣以空格隔開。如果你寫入個命令參數(shù)
與程序事先設(shè)定的參數(shù)相同就能跨過游戲里面的驗證了。當(dāng)然這個命令參數(shù)的強度就看游戲
公司了。。。
好了,大致的介紹就到這里。還有什么擴展大家自己去想吧。。這里拋磚引玉了 - -
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
