【问题标题】:MFC C++ - crashing on ProcessShellCommand() with no commandsMFC C++ - 在没有命令的情况下在 ProcessShellCommand() 上崩溃
【发布时间】:2014-11-11 08:56:11
【问题描述】:

我正在调试我的应用程序的发布版本,并确定ProcessShellCommand 发生异常。这是相关代码。

ParseCommandLine(m_cmdInfo);
CString strDebug;
strDebug.Format(_T("%d"),m_cmdInfo.m_nShellCommand);
AfxMessageBox(strDebug);
if (!ProcessShellCommand(m_cmdInfo)) {
    return FALSE;
}
AfxMessageBox(_T("Done"));

第一个消息框成功出现,但第二个没有。因此,显然发生的异常必须发生在ProcessShellCommand()。但是,如您所见,第一个消息框应该显示 shell 命令,但它显示为空!所以我不明白ProcessShellCommand()到底在做什么。

谁能提供一些见解和/或建议?谢谢。

m_cmdInfo的调试:http://i61.tinypic.com/mjbthh.jpg

【问题讨论】:

  • AfxMessageBox 需要一个字符串,但 m_nShellCommand 是一个 enum(然后是一个整数)。使用整数AfxMessageBox 将尝试将其用作资源ID...
  • 如果您的程序崩溃,请始终在调试器中运行,它可能不会在您期望它崩溃的地方崩溃。比如,谁说关闭消息框时崩溃的不是AfxMessageBox函数?
  • @AdrianoRepetti 谢谢,我已经改变了上面的代码,现在在弹出窗口中得到 0。不知道那是什么意思..
  • 来自MSDN。它是FileNew,它的意思是:“CCommandLineInfo::FileNew 表示在命令行上没有找到文件名。”
  • @AdrianoRepetti 对不起,我确实在这里看到了:msdn.microsoft.com/en-us/library/84dxkf0w.aspx,不知道从中得到什么...这是否意味着它没有得到我试图正常运行的文件?

标签: c++ visual-studio mfc


【解决方案1】:

尝试在那段代码之前调用 CoInitialize(NULL)。

或者,尝试在此解析之前移动打开主窗口的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 2022-10-13
    • 2016-03-19
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多