获取计算机内存信息

实现效果:

  

知识运用:

  ManagementObjectSearcher类的Get方法  //用于调用指定的WMI查询并返回结果集合

  public ManagementObjectCollection Get ()  //返回一个ManagementObjectCollection 包含匹配指定查询的对象

    PropertyData类的Value属性    //该类表是关于WMI属性的信息

  public Object Value {get; set;}  //Value属性用来获取或设置属性的当前值

实现代码:

        private void Form1_Load(object sender, EventArgs e)
        {
            InsertInfo("Win32_PhysicalMemory",ref listView1,true);  //将内存信息显示在列表中
        }

        public void InsertInfo(string Key,ref ListView lst, bool DontInsertNull)
        {
            listView1.Items.Clear();                                //清空ListView控件
                //创建ManagementObjectSearcher对象 使用其查找参数Key的内容
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * from "+Key);
            try
            {
                //遍历foreach语句遍历ManagementObjectSearcher对象查找的内容
                foreach (ManagementObject share in searcher.Get())
                {
                    ListViewGroup grp;                              //创建一个ListViewGroup对象
                    try
                    {                                               //设置组标题
                        grp = lst.Groups.Add(share["Name"].ToString(), share["Name"].ToString());
                    }
                    catch (Exception)
                    {
                        grp = lst.Groups.Add(share.ToString(), share.ToString());
                    }
                    if (share.Properties.Count <= 0)                //如果没有找到信息 消息提示
                    {
                        MessageBox.Show("No Information Avable", "No Info", MessageBoxButtons.OK,
                            MessageBoxIcon.Information);
                        return;
                    }
                    foreach (PropertyData data in share.Properties) //遍历获取到的数据
                    {
                        ListViewItem item = new ListViewItem(grp);
                        if (lst.Items.Count % 2 == 0)
                            item.BackColor = Color.Wheat;
                        else
                            item.BackColor = Color.WhiteSmoke;
                        item.Text = data.Name;                      //设置项目标题
                        if (data.Value != null && data.Value.ToString() != "")  //判断属性名是否为空
                        {
                            switch (data.Value.GetType().ToString())
                            {
                                case "System.String[]":
                                    string[] str = (string[])data.Value;//存储属性名
                                    string str2 = "";
                                    foreach (string s in str)
                                        str2 += s + " ";              //拆分记录
                                    item.SubItems.Add(str2);         //添加到ListView控件中
                                    break;
                                case "System.UInt16[]":
                                    ushort[] shr = (ushort[])data.Value;
                                    string ustr = "";
                                    foreach (ushort u in shr)
                                        ustr += u + " ";
                                    item.SubItems.Add(ustr);
                                    break;
                                default:
                                    item.SubItems.Add(data.Value.ToString()); //直接添加到ListView控件
                                    break;
                            }

                        }
                        else
                        {
                            if (DontInsertNull == true)
                                item.SubItems.Add("没有信息");
                            else
                                continue;
                        }
                        lst.Items.Add(item);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message,"ERROR",MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
        }

  

原文地址:https://www.cnblogs.com/feiyucha/p/10294384.html

时间: 2024-12-15 18:36:21

获取计算机内存信息的相关文章

windows系统调用 获取当前内存信息

1 #include "iostream" 2 #include "windows.h" 3 #include "shlwapi.h" 4 #include "iomanip" 5 #pragma comment(lib,"shlwapi.lib") 6 using namespace std; 7 8 void main(){ 9 SYSTEM_INFO si; 10 ZeroMemory(&si

Qt 获取Windows内存信息

通过调用Windows API来获取Windows 内存信息,并显示在界面上,通过与Windows 内存管理器对比可以看到结果是正确的. 实现的小工具的界面效果与内存管理器对比如下: 实现的完整代码: #pragma execution_character_set("utf-8") #ifndef QMEMORYINFO_H #define QMEMORYINFO_H #include <QtWidgets/QWidget> #include <QLabel>

Python运维之获取操作系统的内存信息

试用一下这个博客,好用的话以后就彻底弃用CSDN,换这个了! 要使用Python获取计算机的内存信息需要用到psutil模块,能够获得的内存信息有内存总量.可用内存总量.已用内存量.内存使用百分比等信息. 写一个简单的小脚本,代码如下: #!/usr/bin/python import psutil pc_mem =psutil.virtual_memory() div_gb_factor =(1024.0 ** 3) print("totalmemor: %fGB" % float(

JAVA获取计算机CPU、硬盘、主板、网络等信息

通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到java路径.比如windows32位操作系统需要将lib中sigar-x86-winnt.dll文件拷贝到java SDK目录的bin内 参考官方主页上的配置项. File Language Description Required sigar.jar Java Java API Yes (for

python 获取linux的内存信息

1.安装psutil源码 https://pypi.python.org/pypi?:action=display&name=psutil#downloads 找到psutil-5.2.2.tar.gz 点击即可下载 shell # tar xzvf psutil-5.2.2.tar.gz shell # cd psutil-5.2.2 shell # python setup.py install 2.使用psutil获取内存信息 终端输入python shell # python Pytho

指针和字符串和字符串常量、用gdb来获取非法内存中的信息

例程1 #include<stdio.h> int main(void) { char *s="hello"; printf("%s\n", s); s[0]="H" //因为s指针指向的字符串"hello"是字符串常量,所以不能通过指针进行更改,所以这里会产生段错误 printf("%s\n", s); return 0; } 例程2 #include<stdio.h> #incl

借助Sigar API获取内存信息

Sigar(全称System Information Gatherer And Reporter,即系统信息收集报表器),它提供了一个开源的跨平台的收集计算机硬件和操作系统信息的API(该API底层接口用C语言编写),本文将演示如何借助Sigar API获取内存信息: package com.ghj.packageoftest; import org.hyperic.sigar.Mem; import org.hyperic.sigar.Sigar; import org.hyperic.sig

使用python获取CPU和内存信息的思路与实现(linux系统)

linux里一切皆为文件,在linux/unix的根目录下,有个/proc目录,这个/proc 是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做"/proc"),这个伪文件系统允许与内核内部数据结构交互,获取有关进程的有用信息,在运行中(on the fly)改变设置(通过改变内核参数).与其他文件系统不同,/proc 存在于内存而不是硬盘中.proc 文件系统提供的信息如下: ?进程信息:系统中的任何一个进程,在 proc 的子目录中都有一个同名的进程 ID,

系统内存信息获取工具类

/** * 得到系统内存信息的工具类 * @author zwenkai */ public class SystemInfoUtils { /** * 得到运行的进程总个数 * * @param context * @return 运行进程个数 */ public static int getRunningProcessCount(Context context) { ActivityManager am = (ActivityManager) context.getSystemService