GlobalMemoryStatusEx来获取系统的内存使用情况

GetProcessMemoryInfo获取某个进程的内存使用情况。和任务管理器看到的是一样的。

具体代码如下:

void GetSystemMemoryInfo()
{
CString strInfo;
MEMORYSTATUSEX statex;
statex.dwLength = sizeof(statex);
GlobalMemoryStatusEx(&statex); DWORDLONG physical_memory = statex.ullTotalPhys / ( * );
DWORDLONG avalid_memory = statex.ullAvailPhys / ( * );
DWORDLONG virtual_totalmemory = statex.ullTotalVirtual / ( * );
DWORDLONG virtual_memory = statex.ullAvailVirtual / ( * );
DWORDLONG usePhys = physical_memory - avalid_memory;
DWORDLONG useVirtual = virtual_totalmemory - virtual_memory; float percent_memory = ((float)usePhys / (float)physical_memory) * ;
float percent_memory_virtual = ((float)useVirtual / (float)virtual_totalmemory) * ;
strInfo.Format("物理内存使用率:%.2f%% 物理内存:%lld MB 可用物理内存:%lld MB\n", percent_memory, physical_memory, avalid_memory);
showText(strInfo);
strInfo.Format("虚拟内存使用率:%.2f%% 虚拟内存:%lld MB 可用虚拟内存:%lld MB \n", percent_memory_virtual, virtual_totalmemory, virtual_memory);
showText(strInfo); SYSTEM_INFO si;
GetSystemInfo(&si); DWORD pid = GetCurrentProcessId();
HANDLE handle;
handle = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
PROCESS_MEMORY_COUNTERS pmc;
GetProcessMemoryInfo(handle, &pmc, sizeof(pmc)); int usedMemory = ; PSAPI_WORKING_SET_INFORMATION workSet;
memset(&workSet, , sizeof(workSet));
BOOL bOk = QueryWorkingSet(handle, &workSet, sizeof(workSet));
if (bOk || (!bOk && GetLastError() == ERROR_BAD_LENGTH))
{
int nSize = sizeof(workSet.NumberOfEntries) + workSet.NumberOfEntries*sizeof(workSet.WorkingSetInfo);
char* pBuf = new char[nSize];
if (pBuf)
{
QueryWorkingSet(handle, pBuf, nSize);
PSAPI_WORKING_SET_BLOCK* pFirst = (PSAPI_WORKING_SET_BLOCK*)(pBuf + sizeof(workSet.NumberOfEntries));
DWORD dwMem = ;
for (ULONG_PTR nMemEntryCnt = ; nMemEntryCnt < workSet.NumberOfEntries; nMemEntryCnt++, pFirst++)
{
if (pFirst->Shared == )
{
dwMem += si.dwPageSize;
}
}
delete pBuf;
pBuf = NULL;
if (workSet.NumberOfEntries > )
{
usedMemory = dwMem / ( * );
}
}
}
strInfo.Format("进程id:%d 已使用内存 %d MB\n", pid, usedMemory); showText(strInfo); CloseHandle(handle);
}

需要引入头文件#include <psapi.h>

MFC下获取系统内存和当前进程的内存使用情况的更多相关文章

  1. shell下获取系统时间

    shell下获取系统时间的方法直接调用系统变量 获取今天时期:`date +%Y%m%d` 或 `date +%F` 或 $(date +%y%m%d) 获取昨天时期:`date -d yesterd ...

  2. MFC中获取系统当前时间

    1.使用CTime类 CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime(); str=tm.Format("现在时间是%Y年% ...

  3. win10 系统下获取系统版本号为6.2的问题(manifest如何写)

    近期赶时髦升级了win10,用着挺爽.但是某天在测试一个bug时发现要对win10做特殊处理,于是直接调用了GetVersionEx,并取出版本号进行判断,但是发现得到的版本竟然是6.2.当时就被雷到 ...

  4. win10 系统下获取系统版本号为6.2的问题

    近期赶时髦升级了win10,用着挺爽.但是某天在测试一个bug时发现要对win10做特殊处理,于是直接调用了GetVersionEx,并取出版本号进行判断,但是发现得到的版本竟然是6.2.当时就被雷到 ...

  5. linux、centos下查看系统版本、bios版本,内存信息等

    1.查看系统版本 [root@localhost ~]# more /etc/issueCentOS release 6.2 (Final)Kernel \r on an \m 2.查看CPU信息 : ...

  6. linux下获取系统时间 和 时间偏移

    获取linux时间  并计算时间偏移 void getSystemTimer(void){#if 0 char *wdate[]={"Sun","Mon",&q ...

  7. Linux C 语言 获取系统时间信息

    比如获取当前年份:        /* 获取当前系统时间 暂时不使用        int iyear = 0;        int sysyear = 0;        time_t now;  ...

  8. Windows API获取系统配置文件的配置参数

    在Windows平台下获取系统配置文件(如:System.ini)的配置参数. 系统配置文件System.ini的内容如下: [SYSTEM] ServiceIP = 10.128.11.99:600 ...

  9. Linux C 获取系统时间信息

    比如获取当前年份:               /* 获取当前系统时间 暂时不使用 ; ; time_t now; struct tm *timenow; time(&now); timeno ...

随机推荐

  1. 每天一个linux命令(1): which命令

    0.学习时间: 2014-05-15 which命令用来在PATH指定的路径中查找特定的文件, 并返回第一个找到的结果. 1. 命令格式:  which 文件名 2.命令功能 一般使用which命令来 ...

  2. [已转移]IE事件流和DOM标准事件流的区别

    该文章已转移到博客:https://cynthia0329.github.io/ 1.执行的顺序不一样 冒泡型事件模型: button->div->body (IE事件流) 捕获型事件模型 ...

  3. docker的ubuntu镜像无ifconfig和ping命令

    docker的ubuntu镜像无ifconfig和ping命令 或者 ubuntu系统中无ifconfig 和 ping 解决方案: 执行以下鸣冷: apt-get update apt-get in ...

  4. HZOJ 集合论

    考场用的set,代码复杂度很低,时间复杂度$O(sum log)$,一发过了大样例,以为1e6的数据很稳了就没再管(然后就挂掉了……) 考后把set化成unordered_set就A了.其实$sum ...

  5. selenium 图片上传

    WebElement  file = driver.findElement(By.name("filename")); 给此元素设置值:file.sendKeys("E: ...

  6. HDU-1257_最少拦截系统

    最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Desc ...

  7. @NOIP2018 - D1T2@ 货币系统

    目录 @题目描述@ @题解@ @代码@ @题目描述@ 在网友的国度中共有 n 种不同面额的货币,第 i 种货币的面额为 a[i],你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为 n.面额 ...

  8. @codeforces - 590E@ Birthday

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 n 个互不相同的只包含 'a', 'b' 的字符串. 请选 ...

  9. H3C 常用信息查看命令

  10. python新知识

    # 强制字符串转化 repr(1.1 + 2.2) # 字符串换行 a = "hello, world. " \ "it's a nice day. " \ & ...