如何取得bcb运行参数

来源:互联网 发布:知我无情有情 张南雁 编辑:程序博客网 时间:2024/06/07 14:50

本文转自 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

原创粉丝点击