十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
C#程序设计获取系统信息的Windows窗体的背景许多软件都有自动关机功能,特别是在长时间下载的时候,这个功能可是使你不用以守候在计算机前面,而电脑却能按照您事先的设定自动关闭。现在我们用visual C#来编写一个多功能的关机程序。C#程序设计获取系统信息的Windows窗体是该程序的一部分,现在让我们来看看具体的过程。

成都网站设计、成都网站建设的关注点不是能为您做些什么网站,而是怎么做网站,有没有做好网站,给创新互联建站一个展示的机会来证明自己,这并不会花费您太多时间,或许会给您带来新的灵感和惊喜。面向用户友好,注重用户体验,一切以用户为中心。
C#程序设计获取系统信息的Windows窗体实现的步骤:
C#程序设计获取系统信息的Windows窗体实现1. 界面的设计
向工程中增加一个Windows窗体并向窗体中添加如下控件:
C#程序设计获取系统信息的Windows窗体实现2. 在窗体类中引用API函数
- using System.Runtime.InteropServices ;
 - using System.Text ;
 - [ 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) ;
 
以上几个API的作用分别是获取系统路径,获得CPU相关信息,获得内存的相关信息,获得系统时间等。
C#程序设计获取系统信息的Windows窗体实现3. 定义以下各结构
在声明完所有的API函数后,我们发现后三个函数分别用到了CPU_INFO、MEMORY_INFO、SYSTEMTIME_INFO等结构,这些结构并非是.Net内部的,它们从何而来?其实,我们在用到以上API调用时均需用到以上结构,我们将函数调用获得的信息存放在以上的结构体中,***返回给程序输出。这些结构体比较复杂,但是如果开发者能够熟练运用,那么整个API世界将尽在开发者的掌握之中。以下就是上述结构体的声明:
- //定义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 ;
 - }
 - file://定义内存的信息结构
 - [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 ;
 - }
 - file://定义系统时间的信息结构
 - [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 ;
 - }
 
C#程序设计获取系统信息的Windows窗体实现4. 编写窗体类的方法
- private void button1_Click(object sender, System.EventArgs e )
 - {
 - file://调用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( ) ;
 - file://调用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( ) ;
 - file://调用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( ) +"字节" ;
 - file://调用GetSystemTime函数获取系统时间信息
 - SYSTEMTIME_INFO StInfo ;
 - StInfo = new SYSTEMTIME_INFO( ) ;
 - GetSystemTime(ref StInfo) ;
 - Date.Text = StInfo.wYear.ToString( ) +
 - "年"+StInfo.wMonth.ToString( ) +"月"+
 - StInfo.wDay.ToString( ) +"日" ;
 - Time.Text = (StInfo.wHour+8).ToString( ) +
 - "点"+StInfo.wMinute.ToString( ) +"分"+
 - StInfo.wSecond.ToString( ) +"秒" ;
 - }
 
C#程序设计获取系统信息的Windows窗体实现的基本情况就向你介绍到这里,希望对你了解和学习C#程序设计获取系统信息的Windows窗体实现有所帮助。