【问题标题】:Using a Batch File to send Arguments to MFC Application with a GUI使用批处理文件通过 GUI 将参数发送到 MFC 应用程序
【发布时间】:2020-05-01 19:34:49
【问题描述】:

我正在寻找合并批处理文件以向 MFC 应用程序发送参数而不是依赖于 GUI 界面的最佳方法。有谁知道这样做的最佳方法?

【问题讨论】:

  • 有几种方法可以处理命令行参数。您现在有几个答案可以帮助您。

标签: user-interface mfc


【解决方案1】:

我在我的应用程序类的InitInstance 方法中使用以下代码:

LPWSTR *szArglist = nullptr;
int iNumArgs = 0;
szArglist = CommandLineToArgvW(GetCommandLine(), &iNumArgs);
if (iNumArgs > 0 && szArglist != nullptr)
{
    for (int iArg = 0; iArg < iNumArgs; iArg++)
    {
        CString strArg(szArglist[iArg]);
        int iDelim = strArg.Find(_T("="));
        if (iDelim != -1)
        {
            CString strParamName = strArg.Left(iDelim);
            CString strParamValue = strArg.Mid(iDelim + 1);
            if (strParamName.CollateNoCase(_T("/lang")) == 0)
            {
                m_strPathLanguageResourceOverride.Format(_T("%sMeetSchedAssist%s.dll"),
                    (LPCTSTR)GetProgramPath(), (LPCTSTR)strParamValue.MakeUpper());

                if (!PathFileExists(m_strPathLanguageResourceOverride))
                    m_strPathLanguageResourceOverride = _T("");
            }
        }
    }

    // Free memory allocated for CommandLineToArgvW arguments.
    LocalFree(szArglist);
}

如您所见,我使用CommandLineToArgvW 方法来提取和处理命令行参数。

【讨论】:

    【解决方案2】:

    GUI 程序可以像命令行程序一样接收命令行参数。

    您的应用程序类(CWinApp,如果没有记错的话)包含一个名为 m_lpCmdLine 的成员,该成员在 CString 中包含命令行参数(如果有)。

    如果您还想处理 shell 参数,您可能还想查看 WinApp::ParseCommandLineCCommandLineInfo(注意,如果您正在处理向导生成的程序,很可能是 WinApp::ParseCommandLine默认情况下已被调用)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      相关资源
      最近更新 更多