如何在C++生成器的应用程序形式中读取命令行(argv)
How to read command line(argv) in a form of application of C++ Builder?
使用C++与Borland,我尝试读取命令行argv
我需要在表单中,当用户单击一个按钮时,它将读取命令行argv
的值。但问题是,我找不到void main(int argc, char ** argv)
.
我已经在调试中尝试过,我把argv
或放在我放LPSTR
的形式的 cpp 文件中,但它不起作用。
我发现只有WinMain,更重要的是,在表单的cpp文件中,没有"WinMain",请问如何获得它?
通常在 C++ Builder GUI 项目中,您没有标准的C++ main()
函数。虽然可以使用 Win32 GetCommandLine
API 函数,但仍必须将命令行解析为单独的参数。所以运行时提供了辅助函数来读取命令行参数,如System::ParamStr()
、System::Sysutils::FindCmdLineSwitch
等。
GetCommandLine
函数与CommandLineToArgvW
结合使用。
请注意,后者仅在宽字符版本中可用。
或者,您可以将WinMain
替换为标准main
,并将构建选项更改为使用标准main
,如果支持的话(它与Visual C++和GNU g++一起使用(。或者,如果编译器支持此语言扩展,则可以使用宽字符wmain
。标准main
的一个问题是参数被编码为Windows ANSI,这以及其他缺点意味着它们不能表示所有有效的Windows文件名,而wmain
的参数和由CommandLineToArgvW
检索的参数可以。
最后一种选择是解析您获得的命令行作为 WinMain
的第四个参数。但是,这没有任何优势。 WinMain
是 16 位 Windows 时代的残留物,但它从未有过技术目的,如果可能的话,最好将其删除。
上述所有解决方案不仅适用于Borland C++ Builder,还适用于任何Windows C++编译器。
您可以:
-
在
System.hpp
中使用 RTL 的ParamCount()
和ParamStr()
功能。 -
使用 C 运行时的全局
_argc
并在stdlib.h
中_argv
变量。 -
分别在
windows.h
和shellapi.h
中使用 Win32 API 的GetCommandLineW()
和CommandLineToArgvW()
函数。
至于 WinMain()
,它位于项目的主.cpp文件中,该文件与实现表单的.cpp文件不同。 在项目管理器中,右键单击.exe文件,然后选择View Source
。或者直接打开<ProjectName>.cpp
文件。
- 从命令行c++发送文本文件名
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 数组长度,为什么从命令行获取时不能使用它?
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 通过 Openssl 命令行加密,通过 c++ 解密
- CMake "--target install"无需"--build"命令行
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- 使用 C++ 将命令行参数拆分为参数/向量
- 在VS2013中使用devenv (C++)传递命令行参数argv
- C++ argv 参数不从命令行解析 *
- 如何在 Visual Studio 2015 调试中将'%'符号作为命令行参数 (argv) 传递?
- 命令行上的输入在什么时候解析为 node.js 中的 process.argv
- 正在将命令行解析为argv数组
- 更改命令行参数argv
- 命令行参数:argv
- 尝试从命令行获取输入时出现char**argv[]segfault
- 如何在C++生成器的应用程序形式中读取命令行(argv)