在 C++ Windows 应用程序中访问命令行参数
Posted
技术标签:
【中文标题】在 C++ Windows 应用程序中访问命令行参数【英文标题】:Access command line parameters in C++ Windows App 【发布时间】:2021-06-28 20:18:12 【问题描述】:我有一个用 Embarcadero C++Builder 编写的 C++ Windows 应用程序,我想将命令提示符中给出的参数传递给应用程序。
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR argv, int argc)
try
Application->Initialize();
Application->CreateForm(__classid(TFormMain), &FormMain);
if (argc > 1)
// pass argv to app.
Application->Run();
catch (Exception &exception)
Application->ShowException(&exception);
catch (...)
try
throw Exception("");
catch (Exception &exception)
Application->ShowException(&exception);
return 0;
我该如何从这里开始?
【问题讨论】:
IIRCApplication->ExeName
包含路径、文件名和字符串形式的所有参数。
【参考方案1】:
首先,您的_tWinMain
入口点的最后两个参数是错误的。它们实际上被定义为LPSTR lpCmdLine, int nShowCmd
。 argv
/argc
参数仅在控制台应用程序的 main()
样式入口点中提供,而不在 GUI 应用程序的 WinMain
样式入口点中提供。 lpCmdLine
参数是指向包含整个原始命令行的单个字符串的指针,它不会像 main()
那样预先解析为子字符串数组。并且nShowCmd
参数与命令行完全无关。
您可以使用 Win32 API GetCommandLineW()
和 CommandLineToArgvW()
函数来获取这样的数组。
另外,C++Builder 的 RTL 有几个自己的 Command Line Support Routines:
System::CmdLine
System::ParamCount()
System::ParamStr()
System::Sysutils::FindCmdLineSwitch()
【讨论】:
以上是关于在 C++ Windows 应用程序中访问命令行参数的主要内容,如果未能解决你的问题,请参考以下文章
Windows 安装程序,在 C++ 中访问自定义操作中的自定义属性
如何访问 C++ windows 10 应用程序中的默认线程池?