few days ago i asked about how to get all running processes in the system using QProcess.
i found a command line that can output all processes to a file:
C:\WINDOWS\system32\wbem\wmic.exe” /OUTPUT:C:\ProcessList.txt PROCESS get Caption
this will create C:\ProcessList.txt file contains all running processes in the system.
i wonder how can i run it using QProcess and take its output to a variable.
it seems every time i try to run it and read nothing happens:
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();
i prefer not to create process.txt at all and to take all the output to a variable…
You can run wmic.exe with “/OUTPUT:STDOUT” switch to print the process info directly to stdout. However, I was unable to read this info through QProcess API and save it in variable. Here’s the code I used:
This code successfully captures output of “cmd.exe /C echo test”, but doesn’t work on wmic.exe. It seems that process wmic.exe is never finished, and I suppose it’s stdout is never flushed so you don’t receive anything throught QProcess::readAll().
That’s all help I can give you. Maybe you, or some other SO user will find bug in the snippet above.