如何用C++获取各种系统相关信息,如CPU使用率,硬盘使用空间,内存使用大小以及操作系统名等等

z1zhangyanan 2007-11-26 10:58:18
我是C++新手,公司给了一个任务,要求用C++程序编写
希望可以在windows 2000/2003下用,听朋友说是靠读取注册表数据来实现的
具体要求是这样的
该程序能够检测CPU的信息(包括使用率/编号/外频/物理编号等等相关信息)
还有能够计算出硬盘的总容量/剩余空间/文件系统/挂接点等等信息
内存等等的相关信息
操作系统名/版本号/发布日期的相关信息
还有机器的硬件平台
以及IP地址,网卡名、每秒接受数据量和发送数据量等等
或者说是该程序能够测试本系统的很多的相关物理信息啊
但是我对这方面的资料很少呀
如果朋友能够提供相关资料或者部分源程序将感之不尽
有相关资料或连接地址的请跟贴
非常感谢
...全文
618 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
z1zhangyanan 2007-11-30
  • 打赏
  • 举报
回复
不会用msdn
captain_x 2007-11-29
  • 打赏
  • 举报
回复
函数都知道了,还不会查msdn?
z1zhangyanan 2007-11-28
  • 打赏
  • 举报
回复
to:
ouyh12345
可否把你的几个函数写具体点呢?他们的参数应该是什么样的呢?

其中,GetDriverType是不是要取磁盘的类型呢?那我要获取系统的所有磁盘应该怎么取 ?
z1zhangyanan 2007-11-26
  • 打赏
  • 举报
回复
请问2楼的大侠,Windows 2000/2003系统的信息也可以通过versionInfo.dwMajorVersion,versionInfo.dwMinorVersion来获取吗?
ouyh12345 2007-11-26
  • 打赏
  • 举报
回复
GetDriveType
GetDiskFreeSpace
GetSystemMetrics
北方大冬瓜 2007-11-26
  • 打赏
  • 举报
回复
BOOL CSystemInfoDialog::OnInitDialog()

  //对话框的初始化函数

  { CString DisplayString;

   SYSTEM_INFO SystemInfo;

  //检测CPU的类型

   ::GetSystemInfo(&&SystemInfo);

  //WinAPI函数,用以取得系统信息

  if (SystemInfo.wProcessorArchitecture = =

  PROCESSOR_ARCHITECTURE_INTEL)

  { switch (SystemInfo.wProcessorLevel) {

  //本程序只演示取得Intel系列CPU的方法

  ……

  //省略对386及486机器的检测

  case 5:

  DisplayString= "Pentium";

  break;

  case 6:

  DisplayString ="Pentium (II/Pro)";

  break; }

   }

   m_CpuType.SetWindowText(DisplayString);

  //变量m_CpuType是一个CStatic框

  //检测内存状态

   MEMORYSTATUS MemoryStatus;

  //内存的现行状态结构

   MemoryStatus.dwLength=sizeof(MEMORYSTATUS);

  //填充结构的大小

   ::GlobalMemoryStatus(&&MemoryStatus);

  //取得内存的状态

   char buffer[20];

   wsprintf(buffer,"%d bytes",MemoryStatus.dwTotalPhys);

  //dwTotalPhys指示物理内存字节

   m_Memory.SetWindowText(buffer);

  //变量m_Memory是一个CStatic框

  //检测操作系统版本

   OSverSIONINFO versionInfo;

   //操作系统版本信息结构

   versionInfo.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);

   ::GetVersionEx (&&versionInfo);

  //取得当前操作系统信息

   if (versionInfo.dwPlatformId = =

   VER_PLATFORM_WIN32_NT)

   {

  //如果操作系统是Windows NT

  ……

  //本文略过对NT系统的检测操作

   }

   else if (versionInfo.dwPlatformId = =

  VER_PLATFORM_WIN32_WINDOWS)

   {

  //如果操作系统是Windows 9X系统

  DisplayString="Windows 95";

   if ((versionInfo.dwMajorVersion >= 4)&&&& (versionInfo.dwMinorVersion > 0))

   {

  //版本4.1以上系统为Windows98系列

  DisplayString="Windows 98";

  char VersionBuffer[20];

  //取得操作系统的版本号

  wsprintf(VersionBuffer,"%d.%d",versionInfo.dwMajorVersion,versionInfo.dwMinorVersion);

  m_Version.SetWindowText(VersionBuffer);

  //在对话框上显示版本信息

   }

   }

   m_System.SetWindowText(DisplayString);

  //在对话框上显示操作系统类

  //检测鼠标

   int MouseInstall=::GetSystemMetrics(SM_MOUSEPRESENT);

   if(MouseInstall!=0)

   m_Mouse.SetWindowText("有");

   int cx,cy;

  //取得当前显示分辨率

   cx=::GetSystemMetrics(SM_CXSCREEN);

  //水平分辨率

   cy=::GetSystemMetrics(SM_CYSCREEN);

  //垂直分辨率

   char Display[20];

   wsprintf(Display,"%d  %d",cx,cy);

  m_Display.SetWindowText(Display);

  //在对话框上显示分辨率信息

  //取得当前系统的颜色设置

  CDC DC=this->GetDC();

  int nColors=DC->GetDeviceCaps(NUMCOLORS);

  if(nColors!=-1)

  wsprintf(Display,"%d 色",nColors);

  else wsprintf(Display,"高彩或真彩");

  m_ColorDeep.SetWindowText(Display);

  //取得系统时间

  SYSTEMTIME SystemTime;

  ::GetSystemTime(&&SystemTime);

  wsprintf(Display,"%d-%d-%d",SystemTime.wMonth,SystemTime.wDay,SystemTime.wYear);

  m_SystemDate.SetWindowText(Display);

  //取得Windows系统的路径

  ::GetWindowsDirectory(Display,20);

  m_SystemPath.SetWindowText(Display);

  return TRUE;

  }
ouyh12345 2007-11-26
  • 打赏
  • 举报
回复
用Windows API获取系统信息,计算CPU占用率
http://spaces.abccba.net/cache/82.htm

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧