溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C#中如何獲取系統(tǒng)信息的Windows窗體

發(fā)布時(shí)間:2021-11-30 16:05:21 來源:億速云 閱讀:248 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“C#中如何獲取系統(tǒng)信息的Windows窗體”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C#中如何獲取系統(tǒng)信息的Windows窗體”這篇文章吧。

C#程序設(shè)計(jì)獲取系統(tǒng)信息的Windows窗體的背景許多軟件都有自動關(guān)機(jī)功能,特別是在長時(shí)間下載的時(shí)候,這個(gè)功能可是使你不用以守候在計(jì)算機(jī)前面,而電腦卻能按照您事先的設(shè)定自動關(guān)閉?,F(xiàn)在我們用visual C#來編寫一個(gè)多功能的關(guān)機(jī)程序。C#程序設(shè)計(jì)獲取系統(tǒng)信息的Windows窗體是該程序的一部分,現(xiàn)在讓我們來看看具體的過程。

C#程序設(shè)計(jì)獲取系統(tǒng)信息的Windows窗體實(shí)現(xiàn)的步驟:

C#程序設(shè)計(jì)獲取系統(tǒng)信息的Windows窗體實(shí)現(xiàn)1. 界面的設(shè)計(jì)

向工程中增加一個(gè)Windows窗體并向窗體中添加如下控件:

C#中如何獲取系統(tǒng)信息的Windows窗體

C#程序設(shè)計(jì)獲取系統(tǒng)信息的Windows窗體實(shí)現(xiàn)2. 在窗體類中引用API函數(shù)

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) ;

以上幾個(gè)API的作用分別是獲取系統(tǒng)路徑,獲得CPU相關(guān)信息,獲得內(nèi)存的相關(guān)信息,獲得系統(tǒng)時(shí)間等。

C#程序設(shè)計(jì)獲取系統(tǒng)信息的Windows窗體實(shí)現(xiàn)3. 定義以下各結(jié)構(gòu)

在聲明完所有的API函數(shù)后,我們發(fā)現(xiàn)后三個(gè)函數(shù)分別用到了CPU_INFO、MEMORY_INFO、SYSTEMTIME_INFO等結(jié)構(gòu),這些結(jié)構(gòu)并非是.Net內(nèi)部的,它們從何而來?其實(shí),我們在用到以上API調(diào)用時(shí)均需用到以上結(jié)構(gòu),我們將函數(shù)調(diào)用獲得的信息存放在以上的結(jié)構(gòu)體中,***返回給程序輸出。這些結(jié)構(gòu)體比較復(fù)雜,但是如果開發(fā)者能夠熟練運(yùn)用,那么整個(gè)API世界將盡在開發(fā)者的掌握之中。以下就是上述結(jié)構(gòu)體的聲明:

//定義CPU的信息結(jié)構(gòu)   [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://定義內(nèi)存的信息結(jié)構(gòu)   [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://定義系統(tǒng)時(shí)間的信息結(jié)構(gòu)   [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#程序設(shè)計(jì)獲取系統(tǒng)信息的Windows窗體實(shí)現(xiàn)4. 編寫窗體類的方法

private void button1_Click(object sender, System.EventArgs e )   {   file://調(diào)用GetWindowsDirectory和GetSystemDirectory函數(shù)分別取得Windows路徑和系統(tǒng)路徑   const int nChars = 128 ;   StringBuilder Buff = new StringBuilder(nChars) ;   GetWindowsDirectory(Buff,nChars) ;   WindowsDirectory.Text = "Windows路徑:"+Buff.ToString( ) ;   GetSystemDirectory(Buff,nChars) ;   SystemDirectory.Text = " 系統(tǒng)路徑:"+Buff.ToString( ) ;    file://調(diào)用GetSystemInfo函數(shù)獲取CPU的相關(guān)信息   CPU_INFO CpuInfo ;   CpuInfo = new CPU_INFO( ) ;   GetSystemInfo(ref CpuInfo) ;   NumberOfProcessors.Text =   "本計(jì)算機(jī)中有"+CpuInfo.dwNumberOfProcessors.ToString( ) +"個(gè)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://調(diào)用GlobalMemoryStatus函數(shù)獲取內(nèi)存的相關(guān)信息   MEMORY_INFO MemInfo ;   MemInfo = new MEMORY_INFO( ) ;   GlobalMemoryStatus(ref MemInfo) ;   MemoryLoad.Text =   MemInfo.dwMemoryLoad.ToString( ) +"%的內(nèi)存正在使用" ;   TotalPhys.Text =   "物理內(nèi)存共有"+MemInfo.dwTotalPhys.ToString( ) +"字節(jié)" ;   AvailPhys.Text =   "可使用的物理內(nèi)存有"+MemInfo.dwAvailPhys.ToString( ) +"字節(jié)" ;   TotalPageFile.Text =   "交換文件總大小為"+MemInfo.dwTotalPageFile.ToString( ) +"字節(jié)" ;   AvailPageFile.Text =   "尚可交換文件大小為"+MemInfo.dwAvailPageFile.ToString( ) +"字節(jié)" ;   TotalVirtual.Text =   "總虛擬內(nèi)存有"+MemInfo.dwTotalVirtual.ToString( ) +"字節(jié)" ;   AvailVirtual.Text =   "未用虛擬內(nèi)存有"+MemInfo.dwAvailVirtual.ToString( ) +"字節(jié)" ;    file://調(diào)用GetSystemTime函數(shù)獲取系統(tǒng)時(shí)間信息   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( ) +  "點(diǎn)"+StInfo.wMinute.ToString( ) +"分"+  StInfo.wSecond.ToString( ) +"秒" ;   }

以上是“C#中如何獲取系統(tǒng)信息的Windows窗體”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI