首页 > 解决方案 > 在 C++ Windows 应用程序中访问命令行参数

问题描述

我有一个用 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;
}

我该如何从这里开始?

标签: c++winapic++builderrad-studio

解决方案


_tWinMain首先,您的入口点的最后两个参数是错误的。它们实际上被定义为LPSTR lpCmdLine, int nShowCmdargv/argc参数仅在控制台应用程序的main()-style 入口点中提供,而不在 GUI 应用程序的WinMain-style 入口点中提供。该lpCmdLine参数是指向包含整个原始命令行的单个字符串的指针,它不会像这样预先解析为子字符串数组main()。并且该nShowCmd参数根本与命令行无关。

您可以使用 Win32 APIGetCommandLineW()CommandLineToArgvW()函数来获取这样的数组。

或者,C++Builder 的 RTL 有几个自己的命令行支持例程


推荐阅读