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窗体实现有所帮助。
当前名称:C#程序设计获取系统信息的Windows窗体浅析
文章来源:http://www.36103.cn/qtweb/news10/2060.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联