Хорошо, вот проблема, я хочу вызвать 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);
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, вероятно, произойдут преобразования символов.