【问题标题】:Qt - How to output Windows PowerShell error message via QProcessQt - 如何通过 QProcess 输出 Windows PowerShell 错误消息
【发布时间】:2014-04-16 19:31:26
【问题描述】:

我正在使用 Qt 4.7,并且我有一个程序需要使用 QProcess 来输出运行 Windows PowerShell 命令的结果。就这个问题而言,假设所有需要支持的是使用“-Command”选项。现在我有这个:

QString path = "C:/windows/system32/WindowsPowerShell/v1.0/powershell.exe"; QStringList command; command.append("-Command"); command.append(/*Whatever test command I want to use...*/); process = new QProcess(); //Note: QProcess *process is a member of this class connect(process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(/*slot to print qprocess errors...*/); connect(process, SIGNAL(readyReadStandardOutput()), this, SLOT(/*slot to display PowerShell output...*/); process->start(path, command);

打印PowerShell输出的槽如下:

std::cout << "RESULT: " << QString(process->readAllStandardOutput()).toStdString() << std::endl;

这与正确的 PowerShell 命令完美配合。例如,我使用命令“Get-ChildItem C:\”对其进行了测试,它打印了正确的数据。如果出现 QProcess 错误,它也可以正常工作。我需要知道如何做的是,如何让它打印 PowerShell 错误消息?例如,如果我尝试直接在 PowerShell 中使用命令“Get-ChildIte”(最后缺少 m),我会收到一条错误消息。但是使用我的代码,它不会打印任何内容。我需要它来打印该错误消息。如果有人知道可以做到这一点的方法,我将不胜感激。谢谢!

【问题讨论】:

    标签: c++ windows qt powershell


    【解决方案1】:

    好的,您在 7 秒前发布了答案。我只是想确认一下,并为您提供一个参考链接,这可能有助于将来解决此问题。

    QProcess Class

    是的,你想要 QProcess 的 readAllStandardError() 函数。

    【讨论】:

    • @LaszloPapp 这不仅仅是一个链接的答案,答案是他需要使用 readAllStandardError 函数。该链接供将来参考,以备他需要时使用。考虑到他已经发布的代码,我确信他有能力集成该功能,所以我觉得没有必要包含任何代码。即使没有链接,答案也是完美的。
    • @LaszloPapp 感谢您的建设性批评,我将努力在未来适当的时候将事情保留给 cmets,并尽量不要过于风度翩翩。
    【解决方案2】:

    因此,在我发布此消息大约一分钟后,我发现了 QProcess 的信号 readyReadStandardError(),它与 readyReadStandardOutput 的操作相同,只是当 QProcess 运行时出现错误时会发出它。我将它连接到与上面相同的插槽,但打印 QString(process->readAllStandardError()).toStdString() 并且它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-17
      • 2014-11-26
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      相关资源
      最近更新 更多