好的,我想调用\ windows \ system32 \ wbem中的wmic.exe执行命令,只读取那里的输出。
根据msdn(http://msdn.microsoft.com/en-us/library/aa390423(v=vs.85).aspx),我不想使用wmi,而且我不想通过cmd执行wmic。
我无法找到一种方法让它发挥作用。我也读了这篇帖子,但没有人回答non-trivial use of `Console` by `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);
答案 0 :(得分:0)
Set WshShell = WScript.CreateObject("WScript.Shell")
Set wmic = WshShell.Exec("wmic cpu get")
Do While wmic.Status = 0
WScript.Sleep 100
Loop
msgbox wmic.Status
If Not wmic.StdOut.AtEndOfStream Then
Msgbox wmic.StdOut.ReadAll
End If
这是有效的vbscript。您可以访问相同的对象。
记得wmic写的是unicode,也没有OEM(cmd.exe)或ANSI(旧的GUI程序)。如果将其视为ansi,可能会发生角色转换。