在.Net中用C#调用Windows系统信息的代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WinShutdown
{
    public partial class WinInfo : Form
    {
            //定义CPU的信息结构
            [StructLayout(LayoutKind.Sequential) ]
            public struct CPU_INFO
            {
            public uint dwOemId ;
            public uint dwPageSize ;
            public uint lpMinimumApplicationAddress ;
            public uint lpMaximumApplicationAddress ;
            public uint dwActiveProcessorMask ;
            public uint dwNumberOfProcessors ;
            public uint dwProcessorType ;
            public uint dwAllocationGranularity ;
            public uint dwProcessorLevel ;
            public uint dwProcessorRevision ;
            }

            //定义内存的信息结构
            [StructLayout(LayoutKind.Sequential) ]
            public struct MEMORY_INFO
            {
            public uint dwLength ;
            public uint dwMemoryLoad ;
            public uint dwTotalPhys ;
            public uint dwAvailPhys ;
            public uint dwTotalPageFile ;
            public uint dwAvailPageFile ;
            public uint dwTotalVirtual ;
            public uint dwAvailVirtual ;
            }

            //定义系统时间的信息结构
            [StructLayout(LayoutKind.Sequential) ]
            public struct SYSTEMTIME_INFO
            {
            public ushort wYear ;
            public ushort wMonth ;
            public ushort wDayOfWeek ;
            public ushort wDay ;
            public ushort wHour ;
            public ushort wMinute ;
            public ushort wSecond ;
            public ushort wMilliseconds ;
            }
       
        [DllImport("kernel32")]
        public static extern void GetWindowsDirectory(StringBuilder WinDir, int count);
       
        [DllImport("kernel32")]
        public static extern void GetSystemDirectory(StringBuilder SysDir, int count);
       
        [DllImport("kernel32")]
        public static extern void GetSystemInfo(ref CPU_INFO cpuinfo);
       
        [DllImport("kernel32")]
        public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);
       
        [DllImport("kernel32")]
        public static extern void GetSystemTime(ref SYSTEMTIME_INFO stinfo);

        public WinInfo()
        {           
            InitializeComponent();
            tmrTime.Start();
        }
        private void tmrTime_Tick(object sender, EventArgs e)
        {
            //调用GetWindowsDirectory和GetSystemDirectory函数分别取得Windows路径和系统路径
            const int nChars = 128;
            StringBuilder Buff = new StringBuilder(nChars);
            GetWindowsDirectory(Buff, nChars);
            WindowsDirectory.Text = "Windows路径:" + Buff.ToString();
            GetSystemDirectory(Buff, nChars);
            SystemDirectory.Text = "系统路径:" + Buff.ToString();

            //调用GetSystemInfo函数获取CPU的相关信息
            CPU_INFO CpuInfo;
            CpuInfo = new CPU_INFO();
            GetSystemInfo(ref CpuInfo);
            NumberOfProcessors.Text =
            "本计算机中有" + CpuInfo.dwNumberOfProcessors.ToString() + "个CPU";
            ProcessorType.Text = "CPU的类型为" + CpuInfo.dwProcessorType.ToString();
            ProcessorLevel.Text = "CPU等级为" + CpuInfo.dwProcessorLevel.ToString();
            OemId.Text = "CPU的OEM ID为" + CpuInfo.dwOemId.ToString();
            PageSize.Text = "CPU中的页面大小为" + CpuInfo.dwPageSize.ToString();

            //调用GlobalMemoryStatus函数获取内存的相关信息
            MEMORY_INFO MemInfo;
            MemInfo = new MEMORY_INFO();
            GlobalMemoryStatus(ref MemInfo);
            MemoryLoad.Text = MemInfo.dwMemoryLoad.ToString() + "%的内存正在使用";
            TotalPhys.Text = "物理内存共有" + MemInfo.dwTotalPhys.ToString() + "字节";
            AvailPhys.Text = "可使用的物理内存有" + MemInfo.dwAvailPhys.ToString() + "字节";
            TotalPageFile.Text = "交换文件总大小为" + MemInfo.dwTotalPageFile.ToString() + "字节";
            AvailPageFile.Text = "尚可交换文件大小为" + MemInfo.dwAvailPageFile.ToString() + "字节";
            TotalVirtual.Text = "总虚拟内存有" + MemInfo.dwTotalVirtual.ToString() + "字节";
            AvailVirtual.Text = "未用虚拟内存有" + MemInfo.dwAvailVirtual.ToString() + "字节";

            //调用GetSystemTime函数获取系统时间信息
            SYSTEMTIME_INFO StInfo;
            StInfo = new SYSTEMTIME_INFO();
            GetSystemTime(ref StInfo);
            lblDate.Text = StInfo.wYear.ToString() + "年" + StInfo.wMonth.ToString() + "月" + StInfo.wDay.ToString() + "日";
            lblTime.Text = (StInfo.wHour + 8).ToString() + "点" + StInfo.wMinute.ToString() + "分" + StInfo.wSecond.ToString() + "秒";
        }


    }
}

PS:
     .Text = 前面的变量我都是用Lable的控件来代替.用于显示在From里...注意:在From里最好用个trimer控件来监听这些Lable控件, 所以我有了trimer控件中的唯一一个事件Tick...

      希望对.Net学习的朋友提供一帮助!当然,这些资料都是从网上下载的,我只做了归纳而已...

 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值