如何取得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
- 如何取得bcb运行参数
- BCB运行期取得Enum(枚举)类型信息
- BCB里如何运行DOS命令
- 如何让程序只运行一次(BCB)
- JS如何取得地址栏参数?
- c#中如何取得应用程序运行路径
- c#中如何取得应用程序运行路径
- c#中如何取得应用程序运行路径
- c#中如何取得应用程序运行路径
- c#中如何取得应用程序运行路径
- c#中如何取得应用程序运行路径
- asp.net中如何取得系统参数
- 如何取得用户参数文件中的parameters
- Eclipse如何运行参数
- 取得BCB环境变量与Windows用户环境变量
- BCB如何拦截消息
- 如何在取得程序运行时所在的路径
- java 如何取得程序运行的当前路径
- 阶乘——高精度求法
- 从RAC恢复到单实例数据库操作步骤
- 深入浅出理解索引结构
- 项目开发和管理需要弄清楚的6个问题
- 基于ACE的线程池学习与实现(二)——ACE_Message_Block与ACE_Condition
- 如何取得bcb运行参数
- js 验证各种格式类型的正则表达式
- V4L2 pixel format
- ubuntu下使用SecureCRT和PUTTY连接串口
- CentOS编译安装Lighttpd1.4.28
- 浏览器内核的解析和对比
- zend framework操作mysql数据库
- 修改注册表开机自启动(vc)
- Objective-C中单例模式的实现