線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:5965
推到 Plurk!
推到 Facebook!

要如何得到所有硬體的資訊呢?

 
jojoboy
初階會員


發表:65
回覆:108
積分:34
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-03-21 11:31:34 IP:211.20.xxx.xxx 未訂閱
請教各位前輩: 有那個API可以得到電腦中所有已安裝的硬體資訊?
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-03-21 11:38:38 IP:61.219.xxx.xxx 未訂閱
引言: 請教各位前輩: 有那個API可以得到電腦中所有已安裝的硬體資訊?
可不可以說出您的目的何在? 是要偵測某些硬體是否安裝嗎? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
jojoboy
初階會員


發表:65
回覆:108
積分:34
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-03-21 11:44:16 IP:211.20.xxx.xxx 未訂閱
前輩: 我不是要偵測某樣硬體.... 我是要得到現在已安裝的硬體~~~~~ 也就是裝置管理員中的所有資訊.... 發表人 - jojoboy 於 2002/03/21 11:46:00
jojoboy
初階會員


發表:65
回覆:108
積分:34
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-03-22 11:47:42 IP:211.20.xxx.xxx 未訂閱
前輩: 經過我昨晚對API的研讀..... 我發覺..... 要得到如控制台中裝置管理員般完整的硬體資訊~~~ 好像不太可能~~~~~ 我換了一個方向去追尋答案~~~~ 是不是該在Windows中的登錄機碼中去尋找資訊會比較好呢???
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-03-22 13:47:14 IP:192.168.xxx.xxx 未訂閱
引言: 前輩: 經過我昨晚對API的研讀..... 我發覺..... 要得到如控制台中裝置管理員般完整的硬體資訊~~~ 好像不太可能~~~~~ 我換了一個方向去追尋答案~~~~ 是不是該在Windows中的登錄機碼中去尋找資訊會比較好呢???
我是好奇您要寫這程式做?用 您是要做到如同windows 2000中的裝置管理員 內有:UDE/系統裝置/音效...顯示卡,且可打進入細項 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
jojoboy
初階會員


發表:65
回覆:108
積分:34
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-03-22 13:52:24 IP:211.20.xxx.xxx 未訂閱
UDE??? 呃.... 什麼是UDE.... 要在那裡找到呢~~~~ 我主要是想透過程式來找到該台電腦所有已安裝的硬體資料... 包括硬體名稱..驅動程式版本之類的資料 發表人 - jojoboy 於 2002/03/22 13:54:33
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-03-22 14:02:14 IP:192.168.xxx.xxx 未訂閱
引言: UDE???
Sorry,打錯字,是IDE啦! regcode是可能的方向 查查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum 好像就是裝置管理員的內容喔! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
jojoboy
初階會員


發表:65
回覆:108
積分:34
註冊:2002-03-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-03-22 14:42:39 IP:211.20.xxx.xxx 未訂閱
呼.... 太好了..... 沒錯....... 就是這樣..... 接下來就是去尋找.... 那組API可以去讀機碼的~~~ 加油...加油
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-03-22 15:01:31 IP:61.219.xxx.xxx 未訂閱
引言: 呼.... 太好了..... 沒錯....... 就是這樣..... 接下來就是去尋找.... 那組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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-03-22 16:18:40 IP:211.20.xxx.xxx 未訂閱
太感謝了.... 感謝站長.... 感謝感謝.... 在我外出送文件的時間裡..... 你就..... 你就幫我了這麼一個大忙..... 嗚嗚..... 太感謝了~~~ 發表人 - jojoboy 於 2002/03/22 16:19:20
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-03-22 17:43:36 IP:61.219.xxx.xxx 未訂閱
引言: 太感謝了.... 感謝站長.... 感謝感謝.... 在我外出送文件的時間裡..... 你就..... 你就幫我了這麼一個大忙..... 嗚嗚..... 太感謝了~~~
乖!乖!不要哭! 您只要幫忙站長在本站多發言,炒熱本站, 站長的努力就沒白費了! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
jojoboy
初階會員


發表:65
回覆:108
積分:34
註冊:2002-03-13

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-03-25 11:08:29 IP:211.20.xxx.xxx 未訂閱
唉~~~~ 真是太慘了~~~~ 到底在機碼中尋找硬體資訊是不是正確的方向呢??? 當我使用Delphi去讀取機碼時, 發覺Tregister中所提供的函數根本就不夠~~~ 根本就無法得知HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum下共有幾組機碼....... 假如寫死的話,那換了一台機器跑程式...... 那並不能確保那台機器的硬體數量和我相同...甚至機碼名稱也不會相同的... 為什麼就無法得知機碼數量??? 為什麼一定要使用路徑去指向下層機碼呢????? 加油...加油.....努力找出別的方法...... 我相信這方向是對的...
weijh
一般會員


發表:0
回覆:3
積分:0
註冊:2002-04-06

發送簡訊給我
#13 引用回覆 回覆 發表時間:2002-04-07 00:49:53 IP:203.204.xxx.xxx 未訂閱
引言: 唉~~~~ 真是太慘了~~~~ 到底在機碼中尋找硬體資訊是不是正確的方向呢??? 當我使用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

發送簡訊給我
#14 引用回覆 回覆 發表時間:2002-04-08 09:30:46 IP:211.20.xxx.xxx 未訂閱
感謝前輩的回答.... 其實我是找不到其他的方法~~~~ 所以才會用讀HKEY的方式去組合成硬體資訊.... 現在是可以讀出ENUM下所有的HKEY值.... 但... 竟然組合不出一個完整的資訊..... 不知前輩有沒有好的建議.... 可以供小弟參考~~~
lee
站長


發表:55
回覆:173
積分:45
註冊:2002-02-27

發送簡訊給我
#15 引用回覆 回覆 發表時間:2002-04-14 11:59:43 IP:61.219.xxx.xxx 未訂閱
在本站的元件庫中有一個抓system information的範例程式(有Source) 您可參考看看 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=14605 他的suorce有些也是用Registy抓系統資料喔!    ~~~Delphi K.Top網站總管~~~
------
~~~Delphi K.Top網站總管~~~
willfei
一般會員


發表:0
回覆:4
積分:0
註冊:2002-07-16

發送簡訊給我
#16 引用回覆 回覆 發表時間:2002-07-18 22:51:36 IP:202.134.xxx.xxx 未訂閱
我都想知可以怎樣做, demo 不可以執行.... 我找到個api SetupDiCreateDeviceInfoList , SetupDiCreateDeviceInfoListEx 但不懂用, 請高手教路.
andersonhsieh
版主


發表:33
回覆:531
積分:439
註冊:2002-06-10

發送簡訊給我
#17 引用回覆 回覆 發表時間:2002-07-18 23:08:43 IP:211.23.xxx.xxx 未訂閱
引言: 我都想知可以怎樣做, demo 不可以執行.... 我找到個api SetupDiCreateDeviceInfoList , SetupDiCreateDeviceInfoListEx 但不懂用, 請高手教路.
我記得某些DELPHI的書有說到如何利API抓取電腦的資訊,可是忘了是那幾本書,你可以去找看看,我的書都在公司,所以沒有辦法幫你找 @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@
andersonhsieh
版主


發表:33
回覆:531
積分:439
註冊:2002-06-10

發送簡訊給我
#18 引用回覆 回覆 發表時間:2002-07-19 10:02:31 IP:211.20.xxx.xxx 未訂閱
找到了,你可以參考delphi 3.0 規劃與實作 2 陳周造著 在第三十一章對這一部份有很詳細的介紹及範例 @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@
willfei
一般會員


發表:0
回覆:4
積分:0
註冊:2002-07-16

發送簡訊給我
#19 引用回覆 回覆 發表時間:2002-07-19 10:32:49 IP:202.134.xxx.xxx 未訂閱
好, 我努力進修, 謝謝!!!!
willfei
一般會員


發表:0
回覆:4
積分:0
註冊:2002-07-16

發送簡訊給我
#20 引用回覆 回覆 發表時間:2002-07-19 10:50:13 IP:202.134.xxx.xxx 未訂閱
我在台灣的網上書局找到了那本書, 但香港沒有, 我又身在香港........ 
andersonhsieh
版主


發表:33
回覆:531
積分:439
註冊:2002-06-10

發送簡訊給我
#21 引用回覆 回覆 發表時間:2002-07-19 13:09:34 IP:211.20.xxx.xxx 未訂閱
引言: 我在台灣的網上書局找到了那本書, 但香港沒有, 我又身在香港........ < face="Verdana, Arial, Helvetica"> 那有沒有delphi4.0或5.0同一作者寫的書,我同事告訴我說他的delphi4.0書的內容和我說的那一本3.0的書內容都差不多 @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@
micwallo
一般會員


發表:3
回覆:12
積分:3
註冊:2002-07-16

發送簡訊給我
#22 引用回覆 回覆 發表時間:2002-07-19 13:37:11 IP:202.134.xxx.xxx 未訂閱
我都在找那一本書呀!
aquyss
一般會員


發表:0
回覆:1
積分:0
註冊:2002-04-15

發送簡訊給我
#23 引用回覆 回覆 發表時間:2002-07-21 16:51:02 IP:61.224.xxx.xxx 未訂閱
嗨嗨。 下載這個元件吧。Free的,Source要錢啦。 他可以開發像控制台的程式喔。所有的軟硬體應該都抓得到。 很神奇喔。我最近也開發一個程式需要用到這的。 裡面也有範例,試試看。還又我用的結果是NT4.0會有問題。硬體多半抓不到。 http://www.delphi32.com/vcl/5032/    
引言: 請教各位前輩: 有那個API可以得到電腦中所有已安裝的硬體資訊?
willfei
一般會員


發表:0
回覆:4
積分:0
註冊:2002-07-16

發送簡訊給我
#24 引用回覆 回覆 發表時間:2002-07-21 21:29:03 IP:61.15.xxx.xxx 未訂閱
非常強勁!!!! 但有無辦法ignore 個popup message , 個"refresh" command call的.
thomas0728
中階會員


發表:112
回覆:260
積分:89
註冊:2002-03-12

發送簡訊給我
#25 引用回覆 回覆 發表時間:2002-08-23 15:43:24 IP:61.220.xxx.xxx 未訂閱
那如果我只是要判斷某數值是否存在不知有何 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

發送簡訊給我
#26 引用回覆 回覆 發表時間:2007-11-26 18:52:41 IP:59.120.xxx.xxx 訂閱

===================引 用 aquyss 文 章===================
嗨嗨。下載這個元件吧。Free的,Source要錢啦。他可以開發像控制台的程式喔。所有的軟硬體應該都抓得到。很神奇喔。我最近也開發一個程式需要用到這的。裡面也有範例,試試看。還又我用的結果是NT4.0會有問題。硬體多半抓不到。 http://www.delphi32.com/vcl/5032/
引言: 請教各位前輩: 有那個API可以得到電腦中所有已安裝的硬體資訊?

哇~找了好久有關這種東西
沒想到這麼久以就有了啊 /_\
不知道那位大大知道怎麼買這個的source?
上面那個連結的購買單好像失效了?
原始網站內又找不到啊 @@
cclcat
一般會員


發表:2
回覆:1
積分:0
註冊:2007-11-27

發送簡訊給我
#27 引用回覆 回覆 發表時間:2007-11-27 15:59:20 IP:61.219.xxx.xxx 訂閱
小弟之前也是在為這個問題困擾
後來也是找到去讀取登錄檔的方法
不過後來是有發現一個問題
就是當使用者的權限不足的時候
會無法查詢到登錄檔的資料

小弟當時是要能夠蒐集公司內所有電腦的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;



編輯記錄
cclcat 重新編輯於 2007-11-27 16:01:03, 註解 無‧
cclcat 重新編輯於 2007-11-27 16:02:21, 註解 無‧
cclcat 重新編輯於 2007-11-27 16:24:17, 註解 無‧
cclcat 重新編輯於 2007-11-27 16:26:00, 註解 無‧
cclcat 重新編輯於 2007-11-27 16:27:36, 註解 無‧
bugmans
高階會員


發表:95
回覆:322
積分:188
註冊:2003-04-12

發送簡訊給我
#28 引用回覆 回覆 發表時間:2007-11-27 19:29:35 IP:125.224.xxx.xxx 未訂閱
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代表為單核心
系統時間:2024-04-18 12:12:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!