我无法让QProcess读取我的VBScript的任何输出。该脚本可以单独执行,也可以在从QProcess调用时执行,并输出到QCreator的应用程序输出,所以我知道我的VBS正在执行。为了排除故障,我将VBS缩减为:

WScript.StdOut.WriteLine("Hi")


我尝试过的Qt端:


连接QProcess完成的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);
}

最佳答案

QProcess::execute是静态方法,因此Process->execute(script, args)等效于QProcess::execute(script, args),即根本不使用实例Process。采用

Process->start( script, args );

关于c++ - 通过QProcess执行VBS永远不会发出readyStandardOutPut,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9523812/

10-11 22:53