Прочитать вывод из консольного приложения wmic

Хорошо, вот проблема, я хочу вызвать wmic.exe, который находится в \ windows \ system32 \ wbem, выполнить команду и только читать вывод оттуда.

Я не хочу использовать wmi используя com согласно msdn (http://msdn.microsoft.com/en-us/library/aa390423(v=vs.85).aspx) и я не хочу выполнять wmic через cmd.

И я не могу найти способ заставить его работать. Я тоже читал эту ветку, но никто не ответил нетривиальное использование `Console` с помощью` wmic.exe`

Я пробовал что-то вроде этого:

FILE* pipe = _popen("wmic.exe cpu get", "r");
if (!pipe)
throw std::exception("error");
char buffer[128];
std::string output;
while(!feof(pipe))
{
if(fgets(buffer, 128, pipe) != NULL) output += buffer;
}

_pclose(pipe);
std::stringstream oss(output);
std::vector<std::string> processor_description;
std::string buffer;
while (std::getline(oss, buffer))
processor_description.push_back(buffer);

-1

Решение

Set WshShell = WScript.CreateObject("WScript.Shell")

Set wmic = WshShell.Exec("wmic cpu get")

Do While wmic.Status = 0

WScript.Sleep 100

Loopmsgbox wmic.Status

If Not wmic.StdOut.AtEndOfStream Then

Msgbox wmic.StdOut.ReadAll

End If

Это VBScript, который работает. У вас есть доступ к тем же объектам.

Помните, что wmic пишет unicode, ни OEM (cmd.exe), ни ANSI (старые программы с графическим интерфейсом). Если читать его как ansi, вероятно, произойдут преобразования символов.

0

Другие решения


По вопросам рекламы [email protected]