在 C++ 中访问命令行参数 Windows App
Access command line parameters in C++ Windows App
我有一个用 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;
}
我该如何从这里开始?
首先,您 _tWinMain
入口点的最后两个参数是错误的。它们实际上被定义为 LPSTR lpCmdLine, int nShowCmd
。 argv
/argc
参数仅在控制台应用程序的 main()
样式入口点中提供,而不是在 GUI 应用程序的 WinMain
样式入口点中提供。 lpCmdLine
参数是指向包含整个原始命令行的单个字符串的指针,它不像 main()
那样被预解析为子字符串数组。并且 nShowCmd
参数与命令行完全无关。
您可以使用 Win32 API GetCommandLineW()
and CommandLineToArgvW()
函数来获取这样的数组。
或者,C++Builder 的 RTL 有几个自己的 Command Line Support Routines:
我有一个用 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;
}
我该如何从这里开始?
首先,您 _tWinMain
入口点的最后两个参数是错误的。它们实际上被定义为 LPSTR lpCmdLine, int nShowCmd
。 argv
/argc
参数仅在控制台应用程序的 main()
样式入口点中提供,而不是在 GUI 应用程序的 WinMain
样式入口点中提供。 lpCmdLine
参数是指向包含整个原始命令行的单个字符串的指针,它不像 main()
那样被预解析为子字符串数组。并且 nShowCmd
参数与命令行完全无关。
您可以使用 Win32 API GetCommandLineW()
and CommandLineToArgvW()
函数来获取这样的数组。
或者,C++Builder 的 RTL 有几个自己的 Command Line Support Routines: