windows下C/C++如何获得当前主机的信息:操作系统版本、系统类型、CUP、网卡、内存和磁盘的利用率?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows下C/C++如何获得当前主机的信息:操作系统版本、系统类型、CUP、网卡、内存和磁盘的利用率?相关的知识,希望对你有一定的参考价值。
请高手指点:windows下C/C++如何获取主机的信息?需要用到哪些知识?我查了一些资料有些是说读注册表,WMI,MSDN上查GetSystemInfo GetDeviceCaps等等,我想能不能直接用API函数,不知道我到底要从哪里入手,请高手指点一下,我要用到哪些知识能实现这个功能?
示例代码如下:
GetsysInfo.h:
#ifndef _H_GETSYSINFO#define _H_GETSYSINFO
#pragma once
#include <afxtempl.h>
class GetSysInfo
public:
GetSysInfo(void);
~GetSysInfo(void);
public:
/********获取操作系统版本,Service pack版本、系统类型************/
void GetOSVersion(CString &strOSVersion,CString &strServiceVersion);
BOOL IsWow64();//判断是否为64位操作系统
/***********获取网卡数目和名字***********/
int GetInterFaceCount();
void GetInterFaceName(CString &InterfaceName,int pNum);
/***获取物理内存和虚拟内存大小***/
void GetMemoryInfo(CString &dwTotalPhys,CString &dwTotalVirtual);
/****获取CPU名称、内核数目、主频*******/
void GetCpuInfo(CString &chProcessorName,CString &chProcessorType,DWORD &dwNum,DWORD &dwMaxClockSpeed);
/****获取硬盘信息****/
void GetDiskInfo(DWORD &dwNum,CString chDriveInfo[]);
/****获取显卡信息*****/
void GetDisplayCardInfo(DWORD &dwNum,CString chCardName[]);
private:
CStringList Interfaces; //保存所有网卡的名字
CList < DWORD, DWORD &> Bandwidths; //各网卡的带宽
CList < DWORD, DWORD &> TotalTraffics; //各网卡的总流量
;
#endif
参考技术A 据我所知API可以,有部分行。获取系统版本,系统类型就可以。获取cpu,网卡,内存等硬件信息,系统病没有提供这个API的,利用率就可以。注册表也没有记录硬件信息,注册表这个方法应该不可行。但是还有一些比较底层的C语言函数可以获取设备的信息,自己可以查查看。 还有一个办法就是调用其他软件的DLL。 参考技术B 操作系统版本,CPU,内存直接可以用API查,网卡比较麻烦一点。 参考技术C 这个应该有现成的库函数的,具体哪个我也不知道。
c语言如何获得文件当前路径?
获得不包含本程序名的双斜杠路径,并用windows 文件资源管理器打开此路径,求头文件,求代码
在main函数的第二个参数里面,
保存着当前程序运行的目录
也就是argv[0]
main( int argc, char *argv[])
printf("%s ", argv[0] );
就是文件当前所在位置
不过需要注意的一点是
这个路径里面保存了当前文件的文件名
如果你只是需要路径的话还需要自己操作一下
main(int a,char *c[])
char s[100];
int i;
//把路径保存到字符串s里
strcpy(s,c[0]);
for(i=strlen(s); i>0 ; i--)
if( s[i] == '\\')
s[i]='\0';
break;
//找到最后一个 \ 并删除之后的内容
//最后输出的s,就是当前文件的路径了
puts(s);
参考技术A
http://hi.baidu.com/andywangcn/item/7633efda5517baf9ca0c39c6
获得双斜杠路径不包含文件名
TCHAR _szPath[MAX_PATH + 1]=0;GetModuleFileName(NULL, _szPath, MAX_PATH);
(_tcsrchr(_szPath, _T('\\\\')))[1] = 0;//删除文件名,只获得路径 字串
CString strPath;
for (int n=0;_szPath[n];n++)
if (_szPath[n]!=_T('\\\\'))
strPath +=_szPath[n] ;
else
strPath += _T("\\\\\\\\");
MessageBox(strPath);//输出==e:\\\\program\\\\Debug\\\\
//头文件用到 windows.h追问
编译过不去。。。。全是错误。。。。
![](https://image.cha138.com/20230318/f3eb67bf55824788be331ce2afc7272c.jpg)
#include <Windows.h>
#include <tchar.h>
#ifdef MAX_PATH
#undef MAX_PATH
#endif
#define MAX_PATH 256
using namespace std;
int main()
TCHAR _szPath[MAX_PATH + 1]=0;
//获取当前文件的位置
GetModuleFileName(NULL, _szPath, MAX_PATH);
cout<<_szPath<<endl;
int i,pos;
//寻找最后一个'\\\\'
for (i=0;i<MAX_PATH;i++)
if (_szPath[i]=='\\\\')
pos = i;
_szPath[pos]='\\0';
cout<<_szPath<<endl;
return 0;
追问
用windows 文件资源管理器打开此路径呢?你这个运行后是单斜杠路径,没法用system打开windows 文件资源管理器的。。。这个方法我用c试过了,在main括号里填点东西就能输出路径,关键是如何用windows 文件资源管理器打开此路径
以上是关于windows下C/C++如何获得当前主机的信息:操作系统版本、系统类型、CUP、网卡、内存和磁盘的利用率?的主要内容,如果未能解决你的问题,请参考以下文章
Win7/Win8.1怎么快速获得Win10更新升级文件推送
如何获得C盘system32文件夹的权限啊,我要装AE破解 要改C/system/drivers/edc/host 这个文件 但是没有权限