热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

windows程序设计win32API获取系统内存信息GlobalMemoryStatus和GlobalMemoryStatusEx

1、获取系统内存信息有2个api,分别是GlobalMemoryStatus和GlobalMemoryStatusExGlobalMemoryStatus函数可以在C语言咧直接调用

1、获取系统内存信息有2个api,分别是GlobalMemoryStatus和GlobalMemoryStatusEx

GlobalMemoryStatus函数可以在C语言咧直接调用,但是GlobalMemoryStatusEx却不可以直接调用

2、看看这2个函数的不同,总的来说这2个函数都可以获取到内存信息,但是GlobalMemoryStatusEx函数是GlobalMemoryStatus函数的增强,

GlobalMemoryStatus虽然可以获取,但当你的机器里装了2条内存条是,她只能获取到一条的内存信息容量,

而GlobalMemoryStatusEx函数却可以获取到所有,只要你系统识别的内存大小

3、看看2 个函数分别怎么用吧!

3.1、先看GlobalMemoryStatus函数,这个函数可以直接调用:

MEMORYSTATUS status//定义存放内存信息的变量
GlobalMemoryStatus(&status);//调用GlobalMemoryStatus函数获取内存信息
//对得到的内存信息处理现实处理
TCHAR ss[256];
ZeroMemory(ss,sizeof(ss)/sizeof(TCHAR));
wsprintf(ss,"%d KB",status.dwTotalPhys/1000);//现实内存大小
MessageBox(hwndDlg,ss,TEXT(""),MB_OK);

3.2、GlobalMemoryStatusEx函数就没有那么容易调用了,它在C语言里不能直接调用,他被写在了系统的kernel32.dll动态链接库里面,所以我们要在C语言里调用系统的动态链接库DLL

直接上代码吧:

/*
 *这里写了个调用kernel32.dll动态链接库里GlobalMemoryStatusEx函数的函数
**/
#include 
typedef   void(WINAPI*   FunctionGlobalMemoryStatusEx)(LPMEMORYSTATUS);//声明函数原型指针
MEMORYSTATUS GetMemoryStatus()
{
	HMODULE hModule;
	FunctionGlobalMemoryStatusEx GlobalMemoryStatusEx;
	MEMORYSTATUS status;
	status.dwLength = sizeof(status);
	hModule = LoadLibrary("kernel32.dll");//载入动态链接库kernel32.dll,返回它的句柄
	if(NULL==hModule)//判断载入dll是否成功
	{
		//error.
		//MessageBox(NULL,TEXT("载入动态链接库kernel32.dll"),TEXT("错误"),MB_OK|MB_ICONERROR);
		return;
	}
        //在kernel32.dll句柄里查找GlobalMemoryStatusEx函数,返回改函数的指针
	GlobalMemoryStatusEx   =(FunctionGlobalMemoryStatusEx)GetProcAddress(hModule,"GlobalMemoryStatusEx");
	if(NULL==GlobalMemoryStatusEx)//判断函数是否找到
	{
		//error
		//MessageBox(hwndDlg,TEXT("函数查找不到"),TEXT("错误"),MB_OK|MB_ICONERROR);
		return;
	}
	GlobalMemoryStatusEx(&status);//调用函数取得系统的内存情况
	FreeLibrary(hModule);//释放链接库句柄
	return status;
}
给下效果图吧,我的机器是4G内存,2跟2G的内存,由于装的是XP系统,所以只能识别3G内存:
GlobalMemoryStatus:
windows程序设计 win32 API 获取系统内存信息 GlobalMemoryStatus  和 GlobalMemoryStatusEx 
GlobalMemoryStatusEx:
windows程序设计 win32 API 获取系统内存信息 GlobalMemoryStatus  和 GlobalMemoryStatusEx 

推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 本文介绍了在Windows系统上使用C语言命令行参数启动程序并传递参数的方法,包括接收参数程序的代码和bat文件的编写方法,同时给出了程序运行的结果。 ... [详细]
  • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
author-avatar
安晗夕Brooke
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有