obtener todos los procesos en ejecución de información utilizando QProcess

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 respuestas

  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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *