日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

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

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

admin
2012年1月1日 2:32 本文熱度 3294
[p]所謂系統(tǒng)信息,就是計(jì)算機(jī)的軟件硬件信息,硬件如cpu主頻、網(wǎng)卡名稱(chēng)等,軟件信息就如操作系統(tǒng)目錄,用戶(hù)目錄等。在平常的編程中,我們往往要用到這些系統(tǒng)信息,比如我前面的字體查看器,如果要寫(xiě)個(gè)c#版,則首先要獲得系統(tǒng)字體的安裝目錄。總之,讀取系統(tǒng)信息對(duì)于編程還是很重要的,.net也不負(fù)所望,提供了很便利的方法,本文提供了四種方法來(lái)從各個(gè)方面對(duì)系統(tǒng)信息進(jìn)行讀取。[/p]
[p]第一種方法:用systeminformation 類(lèi)[/p]
[p]systeminformation 提供靜態(tài)方法和屬性,它們可用于獲取諸如 windows 顯示元素大小、操作系統(tǒng)設(shè)置、網(wǎng)絡(luò)可用性和系統(tǒng)中所安裝硬件的性能等信息,這種方法側(cè)重于操作系統(tǒng)(這里特指windows)的一些設(shè)置和狀態(tài)。[/p]
[p]第二種方法 :用environment 類(lèi)[/p]
[p]通過(guò)這種方法可檢索的系統(tǒng)信息包括命令行參數(shù)、環(huán)境變量設(shè)置、調(diào)用堆棧的內(nèi)容、上次系統(tǒng)引導(dǎo)以來(lái)的時(shí)間,以及公共語(yǔ)言運(yùn)行庫(kù)的版本等等,測(cè)重于使用這個(gè)類(lèi)的應(yīng)用程序所處的環(huán)境和狀態(tài),也有比較多的動(dòng)態(tài)信息,比如開(kāi)機(jī)啟動(dòng)后的毫秒數(shù)等等。[/p]
[p]第三種方法 用registrykey 類(lèi)[/p]
[p]這種方法方法讀取的也只能是靜態(tài)的設(shè)置,不過(guò)比上面兩種方法更加接近操作系統(tǒng),因?yàn)橹凳侵苯訌淖?cè)表中讀取出來(lái)的,有好處也有不好的地方,好處就是基本上可以獲得任何設(shè)置。不好的地方是不夠便利,畢竟,檢索注冊(cè)表的鍵值不如直接調(diào)用方法來(lái)得方便。[/p]
[p]第四種方法 用api函數(shù)[/p]
[p]這種方法嚴(yán)格說(shuō)來(lái)不是用c#來(lái)實(shí)現(xiàn)對(duì)系統(tǒng)信息的讀取,因?yàn)樗鼘?shí)際調(diào)用的是系統(tǒng)api。這種方法有更加有意義的地方,就在其對(duì)api功能的調(diào)用,因而我們可以做出更多的事情。這種方法也可以在java中依樣畫(huà)胡蘆地用到。[/p]
[p]下面講一下程序結(jié)構(gòu):[/p]
[p]//registrykey 類(lèi)所需要的包:[/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)時(shí)間的信息結(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("計(jì)算機(jī)名 : " + systeminformation.computername );[br]lstsysinfo.items.add("是否已連接網(wǎng)絡(luò) : " + systeminformation.network );[br]lstsysinfo.items.add("用戶(hù)域 : " + systeminformation.userdomainname ); [br]lstsysinfo.items.add("當(dāng)前線程用戶(hù)名 : " + systeminformation.username ); [br]lstsysinfo.items.add("啟動(dòng)方式 : " + systeminformation.bootmode );[br]lstsysinfo.items.add("菜單的字體 : " + systeminformation.menufont );[br]lstsysinfo.items.add("顯示器的數(shù)目 : " + systeminformation.monitorcount );[br]lstsysinfo.items.add("鼠標(biāo)已安裝 : " + systeminformation.mousepresent );[br]lstsysinfo.items.add("鼠標(biāo)按鈕數(shù) : " + systeminformation.mousebuttons); [br]lstsysinfo.items.add("是否交互模式 : " + systeminformation.userinteractive );[br]lstsysinfo.items.add("屏幕界限: " + systeminformation.virtualscreen );[br]}[br]public void initenvdata()[br]{[br][br]//獲取程序運(yùn)行的相關(guān)信息.[br]lstenv.items.add("命令行:"+ environment.commandline);[br]lstenv.items.add("命令行參數(shù):"+ string.join(", ",environment.getcommandlineargs()));[br]lstenv.items.add("當(dāng)前目錄:"+ 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("用戶(hù)域:"+ environment.userdomainname);[br]lstenv.items.add("clr版本:"+ environment.version);[br]lstenv.items.add("系統(tǒng)啟動(dòng)后經(jīng)過(guò)的毫秒:"+ environment.tickcount);[br]lstenv.items.add("進(jìn)程上下文的物理內(nèi)存量:"+ environment.workingset); [br]string[] drives = environment.getlogicaldrives();[br]lstenv.items.add("本機(jī)磁盤(pán)驅(qū)動(dòng)器: "+ string.join(", ", drives));[br][br]// 獲取本機(jī)所有環(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]//通過(guò)注冊(cè)表獲取信息[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信息的讀取是錯(cuò)誤的,我本只有一個(gè)cpu,讀成了兩個(gè)[br]lstapi.items.add("本計(jì)算機(jī)中有"+cpuinfo.dwnumberofprocessors.tostring()+"個(gè)cpu"); [br]lstapi.items.add("cpu的類(lèi)型為"+cpuinfo.dwprocessortype.tostring()); [br]lstapi.items.add("cpu等級(jí)為"+cpuinfo.dwprocessorlevel.tostring()); [br]lstapi.items.add("cpu的oem id為"+cpuinfo.dwoemid.tostring()); [br]lstapi.items.add("cpu中的頁(yè)面大小為"+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)時(shí)間信息 [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()+"點(diǎn)"+stinfo.wminute.tostring()+"分"+stinfo.wsecond.tostring()+"秒"); [/p]
[p]}[/p]

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

主站蜘蛛池模板: 欧美国产精品一级二级三级 | 精品国内一区二区三区免费视频 | 中日欧美精品在线播放 | 黑人免费| 亚洲精品在看在线观看高清 | 国产欧美一二三区男女交配 | 国产寡妇偷人在线观看 | 国产欧美日韩综合精品无毒 | 99热这里只有精 | 亚洲欧美中文一区二区三区 | 中国特黄美女一 | 99热这里只有 | 国产a国产国产片 | 日韩精品中文字幕在线 | 一卡二卡三四卡国产乱码 | 午夜三级a三级三点 | 国产丝袜在线精品丝袜不卡 | 亚洲美女国产精品综 | 国产免费一区二区视频 | 国产91玉足脚交在线播放 | 精品国产污污免费网站aⅴ 国产自在自线精品午夜视频 | 精品国产第 | 一边亲着一面膜下奶53分钟 | 亚洲欧美精品福利一区二区 | 欧美伦理一区二区三区电影 | 国产婷婷一区二区在线观看 | 亲子乱子伦xxxx | 日本黄页网站大 | 国产精品一区在线 | 大地资源中文第二页高清 | 欧美性极品hd高 | 性生大片免费观看网站 | 欧美日韩一区二区不卡在线播放 | 国内精品国语自产拍在线观看91 | 国产在线拍小情侣国产拍拍偷 | 色一情一乱一交一二三区 | 亚洲天堂一区二区三区 | 国产一区鲁鲁在线视频免费播放 | 91精品国产免费青青碰在线 | 国产无吗一区 | 亚洲天码中字 |