扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章主要为大家展示了“C#中如何获取系统信息的Windows窗体”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#中如何获取系统信息的Windows窗体”这篇文章吧。
企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,创新互联面向各种领域:玻璃贴膜等成都网站设计、营销型网站建设解决方案、网站设计等建站排名服务。
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窗体”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流