通过QProcess执行VBS永远不会发出readyStandardOutPut

时间:2012-03-01 20:47:21

标签: c++ qt vbscript stdout qprocess

我无法让QProcess读取我的VBScript的任何输出。该脚本可以单独执行,也可以从QProcess调用,并输出到QCreator的Application Output,因此我知道我的VBS正在执行。要解决问题,我已将我的VBS切换为:

WScript.StdOut.WriteLine("Hi")

Qt-side我试过了:

  • 连接QProcess的ready,readyReadStandardOutput, readyReadStandardError信号
  • 我也尝试过setProcessChannelMode到QProcess :: MergedChannels

在MainWindow构造函数中:

connect(Process,SIGNAL(readyReadStandardOutput()),this,SLOT(processDone()));

插槽:

void MainWindow::processDone()
{
qDebug()<<"Out";
/*QString str;
str.append(Process->readAllStandardOutput());
qDebug()<<str;*/
}


void MainWindow::runProcess()
{
    QString script = "cscript";
    QStringList args;
    args<<QString(QDir::currentPath()+ "/myVBs.vbs")<<"//NoLogo";
    Process->execute(script,args);
}

1 个答案:

答案 0 :(得分:1)

QProcess::execute是一种静态方法,因此Process->execute(script, args)相当于QProcess::execute(script, args),即根本不使用您的实例Process。使用

Process->start( script, args );