91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

編程源碼:C#獲取系統(tǒng)軟硬件信息類介紹與實例

admin
2012年1月1日 2:32 本文熱度 3615
[p]所謂系統(tǒng)信息,就是計算機的軟件硬件信息,硬件如cpu主頻、網(wǎng)卡名稱等,軟件信息就如操作系統(tǒng)目錄,用戶目錄等。在平常的編程中,我們往往要用到這些系統(tǒng)信息,比如我前面的字體查看器,如果要寫個c#版,則首先要獲得系統(tǒng)字體的安裝目錄。總之,讀取系統(tǒng)信息對于編程還是很重要的,.net也不負所望,提供了很便利的方法,本文提供了四種方法來從各個方面對系統(tǒng)信息進行讀取。[/p]
[p]第一種方法:用systeminformation 類[/p]
[p]systeminformation 提供靜態(tài)方法和屬性,它們可用于獲取諸如 windows 顯示元素大小、操作系統(tǒng)設(shè)置、網(wǎng)絡(luò)可用性和系統(tǒng)中所安裝硬件的性能等信息,這種方法側(cè)重于操作系統(tǒng)(這里特指windows)的一些設(shè)置和狀態(tài)。[/p]
[p]第二種方法 :用environment 類[/p]
[p]通過這種方法可檢索的系統(tǒng)信息包括命令行參數(shù)、環(huán)境變量設(shè)置、調(diào)用堆棧的內(nèi)容、上次系統(tǒng)引導以來的時間,以及公共語言運行庫的版本等等,測重于使用這個類的應(yīng)用程序所處的環(huán)境和狀態(tài),也有比較多的動態(tài)信息,比如開機啟動后的毫秒數(shù)等等。[/p]
[p]第三種方法 用registrykey 類[/p]
[p]這種方法方法讀取的也只能是靜態(tài)的設(shè)置,不過比上面兩種方法更加接近操作系統(tǒng),因為值是直接從注冊表中讀取出來的,有好處也有不好的地方,好處就是基本上可以獲得任何設(shè)置。不好的地方是不夠便利,畢竟,檢索注冊表的鍵值不如直接調(diào)用方法來得方便。[/p]
[p]第四種方法 用api函數(shù)[/p]
[p]這種方法嚴格說來不是用c#來實現(xiàn)對系統(tǒng)信息的讀取,因為它實際調(diào)用的是系統(tǒng)api。這種方法有更加有意義的地方,就在其對api功能的調(diào)用,因而我們可以做出更多的事情。這種方法也可以在java中依樣畫胡蘆地用到。[/p]
[p]下面講一下程序結(jié)構(gòu):[/p]
[p]//registrykey 類所需要的包:[/p]
[p]using microsoft.win32;[br]//dllimport方法所需要的包:[br]using system.runtime.interopservices;[br]//stringbuilder所需要的包:[br]using system.text;[br]//聲明api函數(shù)[br][dllimport("kernel32")] [br]public static extern void getwindowsdirectory(stringbuilder windir,int count); [br][dllimport("kernel32")] [br]public static extern void getsystemdirectory(stringbuilder sysdir,int count); [br][dllimport("kernel32")] [br]public static extern void getsysteminfo(ref cpu_info cpuinfo); [br][dllimport("kernel32")] [br]public static extern void globalmemorystatus(ref memory_info meminfo); [br][dllimport("kernel32")] [br]public static extern void getsystemtime(ref systemtime_info stinfo); [br]//定義以下各結(jié)構(gòu) [br]//定義cpu的信息結(jié)構(gòu) [br][structlayout(layoutkind.sequential)] [br]public struct cpu_info [br]{ [br]public uint dwoemid; [br]public uint dwpagesize; [br]public uint lpminimumapplicationaddress; [br]public uint lpmaximumapplicationaddress; [br]public uint dwactiveprocessormask; [br]public uint dwnumberofprocessors; [br]public uint dwprocessortype; [br]public uint dwallocationgranularity; [br]public uint dwprocessorlevel; [br]public uint dwprocessorrevision; [br]} [br]//定義內(nèi)存的信息結(jié)構(gòu) [br][structlayout(layoutkind.sequential)] [br]public struct memory_info [br]{ [br]public uint dwlength; [br]public uint dwmemoryload; [br]public uint dwtotalphys; [br]public uint dwavailphys; [br]public uint dwtotalpagefile; [br]public uint dwavailpagefile; [br]public uint dwtotalvirtual; [br]public uint dwavailvirtual; [br]} [br]//定義系統(tǒng)時間的信息結(jié)構(gòu) [br][structlayout(layoutkind.sequential)] [br]public struct systemtime_info [br]{ [br]public ushort wyear; [br]public ushort wmonth; [br]public ushort wdayofweek; [br]public ushort wday; [br]public ushort whour; [br]public ushort wminute; [br]public ushort wsecond; [br]public ushort wmilliseconds; [br]}[br]private void initsysinfodata()[br]{[br]//獲取操作系統(tǒng)設(shè)置[br]lstsysinfo.items.add("計算機名 : " + systeminformation.computername );[br]lstsysinfo.items.add("是否已連接網(wǎng)絡(luò) : " + systeminformation.network );[br]lstsysinfo.items.add("用戶域 : " + systeminformation.userdomainname ); [br]lstsysinfo.items.add("當前線程用戶名 : " + systeminformation.username ); [br]lstsysinfo.items.add("啟動方式 : " + systeminformation.bootmode );[br]lstsysinfo.items.add("菜單的字體 : " + systeminformation.menufont );[br]lstsysinfo.items.add("顯示器的數(shù)目 : " + systeminformation.monitorcount );[br]lstsysinfo.items.add("鼠標已安裝 : " + systeminformation.mousepresent );[br]lstsysinfo.items.add("鼠標按鈕數(shù) : " + systeminformation.mousebuttons); [br]lstsysinfo.items.add("是否交互模式 : " + systeminformation.userinteractive );[br]lstsysinfo.items.add("屏幕界限: " + systeminformation.virtualscreen );[br]}[br]public void initenvdata()[br]{[br][br]//獲取程序運行的相關(guān)信息.[br]lstenv.items.add("命令行:"+ environment.commandline);[br]lstenv.items.add("命令行參數(shù):"+ string.join(", ",environment.getcommandlineargs()));[br]lstenv.items.add("當前目錄:"+ environment.currentdirectory);[br]lstenv.items.add("操作系統(tǒng)版本:"+ environment.osversion);[br]lstenv.items.add("系統(tǒng)目錄:"+ environment.systemdirectory);[br]lstenv.items.add("堆棧信息:"+ environment.stacktrace);[br]lstenv.items.add("用戶域:"+ environment.userdomainname);[br]lstenv.items.add("clr版本:"+ environment.version);[br]lstenv.items.add("系統(tǒng)啟動后經(jīng)過的毫秒:"+ environment.tickcount);[br]lstenv.items.add("進程上下文的物理內(nèi)存量:"+ environment.workingset); [br]string[] drives = environment.getlogicaldrives();[br]lstenv.items.add("本機磁盤驅(qū)動器: "+ string.join(", ", drives));[br][br]// 獲取本機所有環(huán)境變量[br]idictionary environmentvariables = environment.getenvironmentvariables();[br]foreach (dictionaryentry de in environmentvariables)[br]{[br]lstenv.items.add(de.key+"="+de.value);[br]}[br][br]}[br]public void initregkeydata()[br]{[br]//通過注冊表獲取信息[br]registrykey rkey = registry.localmachine;[br]rkey = rkey.opensubkey("hardware\\description\\system\\centralprocessor\\0");[br]lstregkey.items.add("處理器信息:"+rkey.getvalue("processornamestring").tostring().trim());[br][br]rkey=registry.localmachine;[br]rkey = rkey.opensubkey("software\\microsoft\\windows nt\\currentversion\\networkcards\\1");[br]lstregkey.items.add("網(wǎng)卡信息:"+(string)rkey.getvalue("description"));[br]} [br]public void initapidata()[br]{[br]//調(diào)用getwindowsdirectory和getsystemdirectory函數(shù)分別取得windows路徑和系統(tǒng)路徑 [br]const int nchars = 128; [br]stringbuilder buff = new stringbuilder(nchars); [br]getwindowsdirectory(buff,nchars); [br]lstapi.items.add("windows路徑:"+buff.tostring()); [br]getsystemdirectory(buff,nchars); [br]lstapi.items.add("系統(tǒng)路徑:"+buff.tostring()); [br]//調(diào)用getsysteminfo函數(shù)獲取cpu的相關(guān)信息 [br]cpu_info cpuinfo; [br]cpuinfo = new cpu_info(); [br]getsysteminfo(ref cpuinfo); [br]//cpu信息的讀取是錯誤的,我本只有一個cpu,讀成了兩個[br]lstapi.items.add("本計算機中有"+cpuinfo.dwnumberofprocessors.tostring()+"個cpu"); [br]lstapi.items.add("cpu的類型為"+cpuinfo.dwprocessortype.tostring()); [br]lstapi.items.add("cpu等級為"+cpuinfo.dwprocessorlevel.tostring()); [br]lstapi.items.add("cpu的oem id為"+cpuinfo.dwoemid.tostring()); [br]lstapi.items.add("cpu中的頁面大小為"+cpuinfo.dwpagesize.tostring()); [br]//調(diào)用globalmemorystatus函數(shù)獲取內(nèi)存的相關(guān)信息 [br]memory_info meminfo; [br]meminfo = new memory_info(); [br]globalmemorystatus(ref meminfo); [br]lstapi.items.add( meminfo.dwmemoryload.tostring()+"%的內(nèi)存正在使用"); [br]lstapi.items.add("物理內(nèi)存共有"+meminfo.dwtotalphys.tostring()+"字節(jié)"); [br]lstapi.items.add("可使用的物理內(nèi)存有"+meminfo.dwavailphys.tostring()+"字節(jié)"); [br]lstapi.items.add( "交換文件總大小為"+meminfo.dwtotalpagefile.tostring()+"字節(jié)"); [br]lstapi.items.add( "尚可交換文件大小為"+meminfo.dwavailpagefile.tostring()+"字節(jié)"); [br]lstapi.items.add( "總虛擬內(nèi)存有"+meminfo.dwtotalvirtual.tostring()+"字節(jié)"); [br]lstapi.items.add( "未用虛擬內(nèi)存有"+meminfo.dwavailvirtual.tostring()+"字節(jié)"); [br]//調(diào)用getsystemtime函數(shù)獲取系統(tǒng)時間信息 [br]systemtime_info stinfo; [br]stinfo = new systemtime_info(); [br]getsystemtime(ref stinfo); [br]lstapi.items.add(stinfo.wyear.tostring()+"年"+stinfo.wmonth.tostring()+"月"+stinfo.wday.tostring()+"日"); [br]lstapi.items.add((stinfo.whour+8).tostring()+"點"+stinfo.wminute.tostring()+"分"+stinfo.wsecond.tostring()+"秒"); [/p]
[p]}[/p]

該文章在 2012/1/1 2:32:56 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 青青青在线播 | 麻花豆传媒剧 | 国产又嫩又爽又多水 | 国产亚洲精在线看 | 日韩午夜片 | 最新上映电影免费抢先 | 国产伊人精品导航 | 日本午夜 | 琪琪色18| 精品永久在线 | 国产精品偷伦费看 | 午夜国产短视频 | 午夜导航18| 尤物邪恶| 日韩亚洲欧美理论片 | 午夜成人试看体验区 | 琪琪色在线视频 | 国产人碰人摸人爱 | 午夜激情影 | 区二区免费网站 | 激情欧美经典日韩 | 国产欧美日韩不卡 | 午夜人成影视免费 | 国产在线播放不卡 | 午夜福利一区在线 | 国产极品国产极品 | 国产姐弟乱伦 | 91精品视频在线 | 最新在线国产麻豆 | 国产亚洲精品久 | 日韩欧美视频 | 国产亚洲综合视频 | 日本高清一区 | 精品日本一区 | 国产一区二区寻花 | 国产午夜福利精品一 | 国内精品小视频在线 | 成人看片| 91精品福利 | 欧美午夜在线视频 | 91丨熟女丨对白 |