我正在编写一个程序,它返回计算机的一些物理信息。 我已经看到在Windows中存在命令
WMIC CPU GET /FORMAT:LIST
该命令返回有关进程的全部信息,我需要使用C程序中的信息。我的意思是,我必须运行C程序并显示该信息。
我是C的初学者。
答案 0 :(得分:3)
出于查看目的,您可以使用:
#include<stdio.h>
#include<stdlib.h>
int main()
{
system("WMIC CPU GET /FORMAT:LIST");
return 0;
}
如果您想使用此信息,请在此处找到解决方案:https://stackoverflow.com/a/28093714/2317535
使用popen
代替system
。请参阅此处示例https://msdn.microsoft.com/en-us/library/96ayss4b.aspx
char psBuffer[128];
FILE *pPipe;
if( (pPipe = _popen( "set PATH=%PATH%;C:/Program Files (x86)/myFolder/bin", "rt" )) == NULL )
exit( 1 );
然后
while(fgets(psBuffer, 128, pPipe)) {
printf(psBuffer);
}
if (feof( pPipe))
printf( "\nProcess returned %d\n", _pclose( pPipe ) );
答案 1 :(得分:0)
公平警告:此处介绍的方式并非真正的“简单”解决方案。
WMIC
是一个访问WMI Windows Management Instrumentation的命令。 WMIC CPU GET /FORMAT:LIST
可能会得到CPU;在WMI本身的层面上,您可能只是想要获取Win32_Processor
的所有实例。
WMI can be accessed through COM.为此,您首先要使用CoCreateInstance
创建IWbemLocator
,然后致电ConnectServer
以获取IWbemServices
,您可以运行ExecQuery
来查询Win32_Processor
。
不幸的是,COM不容易从C访问,但是it is doable。 (不幸的是我在MSDN上找不到任何关于它的页面; CodeProject文章是我能找到的最好的文章。)
我对这些技术并不是特别熟悉,但是如果你对它们进行全面研究,那就是你将它们连接在一起以获取本地的信息而不是通过呼叫一个外部命令。