【问题标题】:QProcess (net use) does not workQProcess(净使用)不起作用
【发布时间】:2013-01-15 19:59:56
【问题描述】:

我尝试运行“net use \server_ip”并解析结果。平台 - Windows

我有以下代码:

QProcess *prc = new QProcess(0);
QString exec="net use";
QStringList params;
params << "\\\\" + getServerIP();
prc->start(exec,params);
qDebug() << "exec process";
prc->waitForFinished();
qDebug() << prc->readAll() << prc->exitStatus();;
delete connected;

但是 readAll() 会返回 "" 并且 exitStatus() 返回 0。

大家有什么建议吗?

【问题讨论】:

  • "use" 实际上是第一个参数。命令是net.exe
  • 另外,你应该检查QProcess::start的结果
  • QProcess::start 返回 void
  • QProcess 使用信号而不是返回值来报告失败。没有改变您未能检查结果(结果可以表示返回值,但也可以表示异常、输出参数、全局错误号,或者在这种情况下是信号)。

标签: c++ qt qprocess


【解决方案1】:

我的建议是删除以上所有内容,并改为致电WNetAddConnection1

至少如果我正确地解释了你上面的内容,它似乎是这样一个真正的迂回版本:

WNetAddConnection(getServerIP(), NULL, NULL);

如果 GetServerIP 返回一个 QString,您可能需要添加对 toAscii(或 toLatin1、toLocal8Bit 等)的调用以将其转换为 `WNetAddConnection 知道如何处理的内容。


  1. WNetAddConnection2WNetAddConnection3。 Microsoft 官方推荐后者,但您似乎不需要它们提供的任何额外功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多