要如何得到所有硬體的資訊呢? |
|
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
|
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 前輩: 經過我昨晚對API的研讀..... 我發覺..... 要得到如控制台中裝置管理員般完整的硬體資訊~~~ 好像不太可能~~~~~ 我換了一個方向去追尋答案~~~~ 是不是該在Windows中的登錄機碼中去尋找資訊會比較好呢???我是好奇您要寫這程式做?用 您是要做到如同windows 2000中的裝置管理員 內有:UDE/系統裝置/音效...顯示卡,且可打進入細項 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 呼.... 太好了..... 沒錯....... 就是這樣..... 接下來就是去尋找.... 那組API可以去讀機碼的~~~ 加油...加油uses registry; //... var reg:Tregistry; name:string; begin reg:=Tregistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; if reg.OpenKey('\Enum\PCI\IRQHOLDER\01',false) then begin caption:=reg.ReadString('DeviceDesc'); end; reg.Free; end; 剩下來交給您了 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
唉~~~~
真是太慘了~~~~
到底在機碼中尋找硬體資訊是不是正確的方向呢???
當我使用Delphi去讀取機碼時,
發覺Tregister中所提供的函數根本就不夠~~~
根本就無法得知HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum下共有幾組機碼.......
假如寫死的話,那換了一台機器跑程式......
那並不能確保那台機器的硬體數量和我相同...甚至機碼名稱也不會相同的...
為什麼就無法得知機碼數量???
為什麼一定要使用路徑去指向下層機碼呢?????
加油...加油.....努力找出別的方法......
我相信這方向是對的...
|
weijh
一般會員 發表:0 回覆:3 積分:0 註冊:2002-04-06 發送簡訊給我 |
引言: 唉~~~~ 真是太慘了~~~~ 到底在機碼中尋找硬體資訊是不是正確的方向呢??? 當我使用Delphi去讀取機碼時, 發覺Tregister中所提供的函數根本就不夠~~~ 根本就無法得知HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum下共有幾組機碼....... 假如寫死的話,那換了一台機器跑程式...... 那並不能確保那台機器的硬體數量和我相同...甚至機碼名稱也不會相同的... 為什麼就無法得知機碼數量??? 為什麼一定要使用路徑去指向下層機碼呢????? 加油...加油.....努力找出別的方法...... 我相信這方向是對的...用TRegistry.GetKeyNames取得SubKeys 用TRegistry.GetValueNames取得Current Key內的所有Value call Windows.RegEnumKey[Ex]也可以 題外話 讀registry並不是好方法吧 |
jojoboy
初階會員 發表:65 回覆:108 積分:34 註冊:2002-03-13 發送簡訊給我 |
|
lee
站長 發表:55 回覆:173 積分:45 註冊:2002-02-27 發送簡訊給我 |
|
willfei
一般會員 發表:0 回覆:4 積分:0 註冊:2002-07-16 發送簡訊給我 |
|
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|
willfei
一般會員 發表:0 回覆:4 積分:0 註冊:2002-07-16 發送簡訊給我 |
|
willfei
一般會員 發表:0 回覆:4 積分:0 註冊:2002-07-16 發送簡訊給我 |
|
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|
micwallo
一般會員 發表:3 回覆:12 積分:3 註冊:2002-07-16 發送簡訊給我 |
|
aquyss
一般會員 發表:0 回覆:1 積分:0 註冊:2002-04-15 發送簡訊給我 |
|
willfei
一般會員 發表:0 回覆:4 積分:0 註冊:2002-07-16 發送簡訊給我 |
|
thomas0728
中階會員 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
那如果我只是要判斷某數值是否存在不知有何 api 可用
例如
SaveStringToRegistry_LOCAL_MACHINE(
'SYSTEM\CurrentControlSet'
'\Services\class\nettrans',
'ipaddress',
sIPs );
但因 nettrans 下可能有 0000 ,0001,0002....
等目錄,在這些目錄中只有一個數值是"NodeType",問題我不知在那一個目錄中
是否有方法得知 Thomas Chiou
------
Thomas Chiou |
delphikt-mini
一般會員 發表:4 回覆:4 積分:1 註冊:2003-01-14 發送簡訊給我 |
===================引 用 aquyss 文 章=================== 嗨嗨。下載這個元件吧。Free的,Source要錢啦。他可以開發像控制台的程式喔。所有的軟硬體應該都抓得到。很神奇喔。我最近也開發一個程式需要用到這的。裡面也有範例,試試看。還又我用的結果是NT4.0會有問題。硬體多半抓不到。 http://www.delphi32.com/vcl/5032/ 引言: 請教各位前輩: 有那個API可以得到電腦中所有已安裝的硬體資訊? 哇~找了好久有關這種東西 沒想到這麼久以就有了啊 /_\ 不知道那位大大知道怎麼買這個的source? 上面那個連結的購買單好像失效了? 原始網站內又找不到啊 @@ |
cclcat
一般會員 發表:2 回覆:1 積分:0 註冊:2007-11-27 發送簡訊給我 |
小弟之前也是在為這個問題困擾
後來也是找到去讀取登錄檔的方法 不過後來是有發現一個問題 就是當使用者的權限不足的時候 會無法查詢到登錄檔的資料 小弟當時是要能夠蒐集公司內所有電腦的CPU ,記憶體 , 硬碟空間 等資料 後來因為沒辦法由登錄檔蒐集到CPU的資訊 只好改從偵測CPU頻率的方法下手 當時是有找到這個方法啦! 參考一下囉! 不過還是沒辦法找到如何分辨該電腦是單核心跟雙核心電腦就是了 http://www.delphipraxis.net/post502711.html type PROCESSOR_POWER_INFORMATION = packed record Number: Cardinal; MaxMhz: Cardinal; CurrentMhz: Cardinal; MhzLimit: Cardinal; MaxIdleState: Cardinal; CurrentIdleState: Cardinal; end; PPROCESSOR_POWER_INFORMATION = ^PROCESSOR_POWER_INFORMATION; TCPUFrequency = packed record CurrentMhz: Cardinal; MaxMhz: Cardinal; end; function CallNtPowerInformation(InformationLevel: DWORD; InPutBuffer: Pointer; InputBufferSize: ULONG; OutPutBuffer: Pointer; OutPutBufferSize: ULONG): DWORD; stdcall; external 'PowrProf.dll'; function GetCPUFrequency(var CPUFrequency: TCPUFrequency): DWORD; var ppi: PROCESSOR_POWER_INFORMATION; err: DWORD; begin ZeroMemory(@ppi, sizeof(PROCESSOR_POWER_INFORMATION)); err := CallNTPowerInformation(11, nil, 0, @ppi, sizeof(PROCESSOR_POWER_INFORMATION)); if err = 0 then begin CPUFrequency.CurrentMhz := ppi.CurrentMhz; CPUFrequency.MaxMhz := ppi.MaxMhz; end; result := err; end; procedure TForm1.Button1Click(Sender: TObject); var CPUFrequency: TCPUFrequency; err: DWORD; s: String; begin ZeroMemory(@CPUFrequency, sizeof(TCPUFrequency)); err := GetCPUFrequency(CPUFrequency); if err = 0 then begin s := 'Current frequency: ' IntToStr(CPUFrequency.CurrentMhz) ' MHz' #13#10; s := s 'Max frequency: ' IntToStr(CPUFrequency.MaxMhz) ' MHz'; ShowMessage(s); end else ShowMessage(SysErrorMessage(err)); end; |
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
http://www.delphi32.com/vcl/5032/
官方網站在http://www.mitec.cz/最近版本為10.8.1 MiTeC System Information Component Suite 在http://www.mitec.cz/Downloads/msi.zip可下載範例程式 不過還是沒辦法找到如何分辨該電腦是單核心跟雙核心電腦就是了 至於這個問題請參考http://delphi.ktop.com.tw/board.php?cid=30&fid=71&tid=260 在CpuInfo.FlagDualCore可以取得是否為雙核心 我電腦的CPU為AMD Semporn 3000 ,FlagDualCore值為0代表為單核心 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |