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. 数组map用法总结

    数组中,map方法,指的是是数组的映射. map基本语法如下:function回调支持3个参数,第1个是遍历的数组内容:第2个是对应的数组索引,第3个是数组本身. map方法的作用不难理解,“映射”嘛 ...

  2. [React Native]去掉WebStorm中黄色警告

    用WebStorm开发RN难免会碰到一大堆黄色警告.就像下面这样. 其实这个错误并不会影响开发,但是作为一个上升处女座的,我很难忍.于是各种想办法. 上网查了半天发现这篇文章 http://blog. ...

  3. hdu2041 dp

    #include<stdio.h> int main() { int i,t,n; ]; dp[]=; dp[]=; dp[]=; ;i<=;i++) dp[i]=dp[i-]+dp ...

  4. 【NS2】添加mUDP、mUdpSink和mTcpSink模块

    根据柯老师的教材可知,mUDP是UDP的延伸,除了具有UDP的功能外,还能记录所发送的包的信息.mUdpSink可以把接收到的包的信息记录 到文件中.mTcpSink是TCPsink的延伸,除了具有T ...

  5. HDU 5572 An Easy Physics Problem【计算几何】

    计算几何的题做的真是少之又少. 之前wa以为是精度问题,后来发现是情况没有考虑全... 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5572 题意: ...

  6. @CSP模拟2019.10.16 - T3@ 垃圾分类

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 为了保护环境,p6pou建设了一个垃圾分类器. 垃圾分类器是一个 ...

  7. Laravel Class config does not exist in

    修改了Laravel里面的.env文件之后报这个错误,找半天,找到罪魁祸首了,错误信息: Fatal error: Uncaught ReflectionException: Class config ...

  8. 待性能改善的一个SQL

    select t.*, t.rowid from tb_tk_datasakusei_ctrl t; alter table ATOMBB.TB_TK_JISSEKI_INFO_DETAIL add ...

  9. 2018-2-13-WPF-只允许打开一个实例

    title author date CreateTime categories WPF 只允许打开一个实例 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:2 ...

  10. ImportError: No module named libqt_gui_cpp_shiboken

    在使用 rosrun rqt_publisher rqt_publisher 调用ROS图形化界面的过程中出现: 而且在使用图像化界面添加/cmd_vel时,无法添加,命令窗口显示“段错误”. 在网上 ...