---------------------------------------------------------------------------
VC 驿站
WwW.CcTry.CoM
多抽出一分钟时间来学习,让你的生命更加精彩!
C、C++、VC++ 各种学习资源,免费教程,期待您的加入!
动画教程只是起到技术交流的作用,请大家不用利用此方法做非法用途.
由此动画造成的任何后果和动画作者及本站无关.
----------------------------------------------------------------------------------------
大家好,我是Syc
今天给大家做的教程是:
vc++基础班[25]---系统信息的获取
------------------------------------------ Begin ----------------------------------------
①、获取当前登录用户名称:
函数为:GetUserName,准确的说此函数为获取当前线程关联的用户名称;
②、获取计算机名称:
函数为:GetComputerName,当然也可以通过 SetComputerName 函数来进行计算机名称的设置,但必须重新启动系统!
③、获取CPU的描述信息:
CString GetCpuDescription()
{
CString strCPU;
HKEY hKey = NULL;
LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
_T("Hardware\\Description\\System\\CentralProcessor\\0") , 0, KEY_QUERY_VALUE, &hKey);
if(lRet == ERROR_SUCCESS){
DWORD dwSize = 0;
BYTE *pszBuf = NULL;
lRet = RegQueryValueEx(hKey, _T("ProcessorNameString"), NULL, NULL, NULL, &dwSize);
if(lRet == ERROR_SUCCESS && dwSize > 0){
pszBuf = new BYTE[dwSize+1];
ZeroMemory(pszBuf, dwSize+1);
RegQueryValueEx(hKey, _T("ProcessorNameString"), NULL, NULL, pszBuf, &dwSize);
}
RegCloseKey(hKey);
strCPU.Format(_T("%s"), pszBuf);
if (pszBuf) delete [] pszBuf;
}
return strCPU;
}
④、获取内存信息:
ULONGLONG GetMemoryInfo()
{
ULONGLONG dwMemSpace = 0;
MEMORYSTATUSEX memStatus = {0};
memStatus.dwLength = sizeof(MEMORYSTATUSEX);
GlobalMemoryStatusEx(&memStatus);
dwMemSpace = (ULONGLONG)(memStatus.ullTotalPhys /1024/1024);
return dwMemSpace;
}
⑤、获取磁盘列表及容量信息:
计算机存储单位:Byte、KB、MB、GB、TB、PB、EB、ZB、YB、DB、NB
////////////////////////////////////////////////////////////////////////////////
CString EnumDrives()
{
UINT nCount = 0;
CString strDrives;
TCHAR *pBuf = NULL;
//原则上来说 4*26+1 大小就够用了,每个盘符占用4个字符,也就是:C:\\0
TCHAR szBuf[MAX_PATH] = {0};
DWORD dwRet = GetLogicalDriveStrings(MAX_PATH, szBuf);
if (dwRet != 0){
nCount = dwRet/4;
pBuf = szBuf;
for (UINT idx = 0; idx < nCount; ++idx, pBuf += 4){
strDrives.AppendFormat(_T("%s%s"), pBuf, _T("\r\n"));
}
}
return strDrives;
}
CString GetDriveTypeString(CString strDrive)
{
//传递的参数至少要包含:盘符+ :
//也可以是目录的路径,但是结尾必须有\\符号
CString strDriveTpye;
UINT uType = GetDriveType(strDrive);
switch (uType)
{
case DRIVE_UNKNOWN:
strDriveTpye = _T("类型未知!");
break;
case DRIVE_NO_ROOT_DIR:
strDriveTpye = _T("指定的盘符不存在!");
break;
case DRIVE_REMOVABLE:
strDriveTpye = _T("软盘或U盘");
break;
case DRIVE_FIXED:
strDriveTpye = _T("本地硬盘或移动硬盘");
break;
case DRIVE_REMOTE:
strDriveTpye = _T("网络磁盘");
break;
case DRIVE_CDROM:
strDriveTpye = _T("CD-ROM");
break;
case DRIVE_RAMDISK:
strDriveTpye = _T("RAM 磁盘");
break;
default:
break;
}
return strDriveTpye;
}
CString GetDriveSpaceInfo(CString strDrive)
{
CString strInfo;
ULARGE_INTEGER nFreeBytesAvailable = {0};
ULARGE_INTEGER nTotalNumberOfBytes = {0};
ULARGE_INTEGER nTotalNumberOfFreeBytes = {0};
if (GetDiskFreeSpaceEx(strDrive, &nFreeBytesAvailable, &nTotalNumberOfBytes, &nTotalNumberOfFreeBytes)) {
//单位是字节
//strInfo.Format(_T("可用容量:%I64u Byte\r\n总容量:%I64u Byte\r\n所有可用容量:%I64u Byte"),
// nFreeBytesAvailable.QuadPart, nTotalNumberOfBytes.QuadPart, nTotalNumberOfFreeBytes.QuadPart);
//单位是GB
long double dFreeBytesAvailable = ((long double)(nFreeBytesAvailable.QuadPart))/(1024*1024*1024);
long double dTotalNumberOfBytes = ((long double)(nTotalNumberOfBytes.QuadPart))/(1024*1024*1024);
long double dTotalNumberOfFreeBytes = ((long double)(nTotalNumberOfFreeBytes.QuadPart))/(1024*1024*1024);
strInfo.Format(_T("可用容量:%.2Lf GB\r\n总容量:%.2Lf GB\r\n所有可用容量:%.2Lf GB"),
dFreeBytesAvailable, dTotalNumberOfBytes, dTotalNumberOfFreeBytes);
}
return strInfo;
}
- vc++基础班[24]---系统各种路径信息的获取
vc++基础班[24]---系统各种路径信息的获取 ------------------------------------------ Begin ------------------------- ...
- vc++基础班[23]---文件夹的基本操作
①.文件夹的创建:CreateDirectory ※※※ 注意:此函数只能创建一层目录,比如想在 C 盘下的 Temp 目录下创建新目录为:123 那么前提是 Temp 这个目录存在才可以! ...
- vc++基础班[22]---文件的基本操作2
MFC 中的 CFile 及其派生类中没有提供直接进行文件的复制操作,因而要借助于SDK API: SDK中的文件相关函数常用的有CopyFile().CreateDirectory().Dele ...
- vc++基础班[27]---实现一个简单的任务管理器
因为任务管理器中涉及到进程的枚举操作,所以把两节课的知识点合并到一起来讲! ①.设计界面.以及列表控件变量的绑定: ②.列表控件样式的指定: m_TaskList.SetExtendedSty ...
- vc++基础班[28]---动态数组及动态链表的讲解
C++中也有相应的动态数组.动态链表.映射表的模板类,就是STL中的:vector.list.map 他们属于C++标准中的一部分,对于程序的移植性来说也是不错的,但是在MFC编程中使用 CArray ...
- vc++基础班[21]---文件的基本操作之CFile
①.文件的创建.打开.关闭: 文件的创建.打开:CFile::Open 文件的关闭:CFile::Close CFile::modeCreate:以新建方式打开,如果文件不存在,则新建:如果文件已 ...
- vc++基础班[26]---进程的相关操作
①.ShellExecute 进行进程的创建,属于 shell api: //int iRet = (int)ShellExecute(m_hWnd, _T("open"), ...
- Python基础班学习笔记
本博客采用思维导图式笔记,所有思维导图均为本人亲手所画.因为本人也是初次学习Python语言所以有些知识点可能不太全. 基础班第一天学习笔记:链接 基础班第二天学习笔记:链接 基础班第三天学习笔记:链 ...
- 老段带你学鸟哥Linux视频教程 包含基础班+提高班
老段带你学鸟哥Linux视频教程 包含基础班+提高班,附带pdf文档. 目录结构如下: 目录:/-老段带你学鸟哥Linux视频教程 [.9G] ┣━━老段带你学鸟哥-服务器篇 [1009.4M] ┃ ...
随机推荐
- Nginx自定义404页面并返回404状态码
Nginx定义404页面并返回404状态码, WebServer是nginx,直接告诉我应该他们配置了nginx的404错误页面,虽然请求不存在的资源可以成功返回404页面,但返回状态码确是200. ...
- C#设计模式(14)——模板方法模式
1.模板方法模式介绍 提到模板我们经常会想到简历模板/PPT模板等,以简历模板为例,不同的人可以使用一样的简历模板,在填充内容时根据自己的名字/工作经历等填写自己的内容,从而形成不同的简历.在OO中模 ...
- HDU - 1272 小希的迷宫(并查集判断环)
https://cn.vjudge.net/problem/HDU-1272 Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardo ...
- Could not find default endpoint element that references contract 'wcfXXXXXXXXXXX' in the ServiceMode
Service本身没有问题,但是调用的时候,只在DataAccessSilverlight里引用了,而在主工程WebGISDemo里没有引用服务PowerDataServiceReference,所以 ...
- Android上禁止屏幕旋转
看网上讲了很多,设置很多属性,设置了很多,其实最关键的一点是这个 @Overrideprotected void onResume() { /** * 设置为横屏 */ if(getRequested ...
- Webpack2学习记录-2
这篇在 webpack-demo 目前下新建一个 w2 目录,学习 webpack.config.js 及 与 npm scripts 的使用. 1.w2 下新建一个 webpack.config.j ...
- linux下安装好mysql后,登录时提示libgcc_s.so.1 must be installed for pthread_cancel to work
网上找了很多帖子,各说纷纭, 自己到https://centos.pkgs.org/下载对应版本的libgcc_s.so.1,使用rpm -ivh libgcc-4.8.5-16.el7.i686.r ...
- 时间戳time
时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日开始按秒计算的偏移量(time.gmtime(0))此模块中的函数无法处理1970纪元年以前的时间或太遥远的未来(处理极 ...
- Python非空即真,非零即真
非空即真,非零即真 #1. 非空即真(只要输入不为空就是真) #username =''(空字典.空字符串.空元组都算空) # a= '' # b=[] # c={} # d=None (返回值是No ...
- [JSON]初识JSON
1:什么是json json是,是储存和交换文本信息的语法,类似于xml,但是比xml更小,更快,更易解析. 2:JSON的语法规则 JSON中:数据在key/velue对中,数据由对号分隔,花括 ...