hace unos días me preguntó acerca de cómo obtener todos los procesos en ejecución en el sistema utilizando QProcess.
he encontrado una línea de comandos que puede dar salida a todos los procesos en un archivo:

C:\WINDOWS\system32\wbem\wmic.exe» /OUTPUT:C:\ProcessList.txt el PROCESO de obtener Título

esto creará C:\ProcessList.txt el archivo contiene todos los procesos que se ejecutan en el sistema.
me pregunto ¿cómo puedo ejecutarlo usando QProcess y tomar su resultado a una variable.

parece que cada vez que intento ejecutar y leer no pasa nada:

QString program = "C:\WINDOWS\system32\wbem\wmic.exe";
QStringList arguments;
arguments << "/OUTPUT:C:\ProcessList.txt" <<"PROCESS"<< "get"<< "Caption";

process->setStandardOutputFile("process.txt");
process->start(program,arguments);

QByteArray result = process->readAll();

prefiero no crear process.txt en todos y tomar la salida a una variable…

Kaycee — he votado a cerca de pensar que esto no era una pregunta, sino una más cerca de leer veo que realmente es. Mi mal.
Usted tiene wmic enviar la salida a c:\ProcessList.txt y usted redirigir wmic‘s en la salida estándar a process.txt. La salida que está tratando de almacenar en una variable?
me gustaría almacenar todos los archivos de salida que permite decir en un mapa… archivo de salida es el siguiente: services.exe C:\Windows\system32\services services2.exe C:\Windows\system32\services services3.exe C:\Windows\system32\services . . . pero por alguna razón sólo la primera línea se guarda…

OriginalEl autor kaycee | 2010-04-13

2 Comentarios

  1. 6

    Puede ejecutar wmic.exe con «/SALIDA:STDOUT» interruptor para imprimir la información del proceso directamente a la salida estándar (stdout). Sin embargo, era incapaz de leer esta información a través de QProcess API y guardarlo en la variable. Aquí está el código que he usado:

    #include <QtCore/QCoreApplication>
    #include <QProcess>
    #include <QDebug>
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        QProcess process;
        process.setReadChannel(QProcess::StandardOutput);
        process.setReadChannelMode(QProcess::MergedChannels);
    //   process.start("cmd.exe /C echo test");
        process.start("wmic.exe /OUTPUT:STDOUT PROCESS get Caption");
    
        process.waitForStarted(1000);
        process.waitForFinished(1000);
    
        QByteArray list = process.readAll();
        qDebug() << "Read" << list.length() << "bytes";
        qDebug() << list;
    }

    Este código con éxito la captura de la salida de «cmd.exe /C echo de prueba», pero no funciona en el wmic.exe. Parece que el proceso de wmic.exe nunca está terminado, y supongo que es stdout nunca es vacía para no recibir nada a través de QProcess::readAll().

    Que toda la ayuda que me puedan dar. Tal vez usted, o algún otro de MANERA que el usuario va a encontrar el error en el fragmento de arriba.

    OriginalEl autor chalup

  2. 2

    Probar esto va a funcionar bien.

    process.start("cmd", QStringList() << "/C" << "echo" << "process" << "get" << "caption" << "|" << "wmic");

    OriginalEl autor Sivambigai.M

Dejar respuesta

Please enter your comment!
Please enter your name here