如何取得bcb運行參數

本文轉自 C++Builder 研究 - http://www.ccrun.com/article/go.asp?i=130&d=33h2e2
用過C語言編程的人都知道,在DOS下的編程可以通過main函數的參數取得命令行參數的個數以及每個參數的字符串,例如

int main(int argv ,char *argv[])
{

}

  則命令行參數是argc個,這些參數分別存儲在argv[0]~argv[argc-1]中,其中argv[0]是可執行文件的名字(含路徑),那麼Windows程序是怎麼取得命令行參數的呢?用C語言寫過windows程序的人都知道,在windows程序的主函數WinMain()中,有一個參數lpszCmd,這個參數就是命令行參數。但我們在windows編程時一般都沒在WinMain()函數工作,再加上lpszCmd是整個命令行,要取得每個參數使用也不方便,有沒有更好的方法呢?

  如果你是使用的C++Builder編程,那麼我就恭喜你,在C++Builder中用使用命令行參數是非常簡單。C++Builder定義了三個全局變量和函數CmdLine、ParamStr()、ParamCount(),有了這三個變量和函數,就可以非常方便地使用命令行參數了,首先我們來看一下這幾個函數和變量的定義:

extern PACKAGE char *CmdLine;
extern PACKAGE AnsiString __fastcall ParamStr(int Index);
extern PACKAGE int __fastcall ParamCount(void);

  CmdLine和WinMain()的參數lpszCmd是一樣的,也就是整個命令行參數;ParamCount()用來取得命令行參數的個數,但不包括可執行文件名,也就是相當於DOS下的argc-1,ParamSter()用來取得每一個命令行參數的值,ParamStr(0)就是可執行文件名,實際的參數就是ParamStr(1)~ParamStr(ParamCount())。下面就以一個例子來說明這三個函數變量的使用。

  在窗體上放置一個Label,用來顯示總的命令行參數;再加入一個ListBox,用來顯示每個參數,然後在窗體的onCreate事件中加入以下代碼:

Label1->Caption=CmdLine;
for(int i=0;i<=ParamCount();i++)
ListBox1->Items->Add(ParamStr(i));

  然後在菜單Run->Parameters…中修改命令行參數,然後運行程序……怎麼樣?夠簡單的吧!

 

以下內容是姚銀原創:

工程入口  代碼片段如下:

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR lpCmdLine, int)
{
       CmdLine = "-n -v -x yy.exe";

ParamCount() 並不等於4,即程序的運行參數在此處指定是錯誤的。其實工程入口函數WinMain的一個參數

lpCmdLine就是指向命令行參數的指針。也就是說在工程跑起來之前,命令行參數就是已知數了。

要改變運行參數,可在菜單中選擇運行-》參數-》參數,空格中寫入-n -v -x yy.exe,ParamCount()則爲4

 

要通過代碼嚮應用程序傳遞參數,可用WinExec  具體見http://msdn.microsoft.com/en-us/library/ms687393

發佈了53 篇原創文章 · 獲贊 15 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章