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

取得條碼機中的CPU頻率

答題得分者是:taishyang
hank73317
一般會員


發表:20
回覆:47
積分:13
註冊:2008-12-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-02-26 18:23:44 IP:122.146.xxx.xxx 訂閱
請問各位高手,我要找CPU的頻率阿,所以我去搜尋了一篇code,布過無法順利取得CPU的頻率,在按下Button後,會跳出ShowMessage("錯誤:無法打開有關的hKEY!");

請各位高手幫個忙,改一下code,讓我可以順利取得CPU的頻率,謝謝各位高手了................
[code cpp]
//---------------------------------------------------------------------------
#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
LPBYTE GetNic()
{
HKEY hKEY;
LPCTSTR data_Set;
long ret0;

data_Set="\\Hardware\\Description\\System\\CentralProcessor\\0\\";
ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set, 0, KEY_READ, &hKEY));
if (ret0!=ERROR_SUCCESS)
{
ShowMessage("錯誤:無法打開有關的hKEY!");
return (LPBYTE)-1;
}
LPBYTE Fre=new BYTE[128];
DWORD type_1=REG_SZ ; DWORD cbData_1=128;
long ret1=::RegQueryValueEx(hKEY, "~MHz", NULL,&type_1, Fre, &cbData_1);
if(ret1!=ERROR_SUCCESS)
{
ShowMessage("錯誤:無法查看有無註冊表信息!");
return (LPBYTE)-1;
}
// CString str_Fre=CString(Fre);
//MessageBox("主頻:" str_Fre "\n" "haha");
::RegCloseKey(hKEY);
return Fre;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
GetNic();
}
//---------------------------------------------------------------------------
[/code]
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-02-26 21:00:00 IP:118.169.xxx.xxx 訂閱
//---------------------------------------------------------------------------
LPBYTE GetNic()
{
HKEY hKEY;
LPCTSTR data_Set;
long ret0;
data_Set="HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";
ret0 = (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_READ, &hKEY));
if (ret0 != ERROR_SUCCESS){
ShowMessage("錯誤:無法打開有關的hKEY!");
return (LPBYTE)-1;
}

LPBYTE Fre = new BYTE[128];
DWORD type_1 = REG_SZ;
DWORD cbData_1 = 128;

long ret1 = ::RegQueryValueEx(hKEY, "~MHz", NULL, &type_1, Fre, &cbData_1);
if(ret1!=ERROR_SUCCESS){
ShowMessage("錯誤:無法查看有無註冊表信息!");
return (LPBYTE)-1;
}

::RegCloseKey(hKEY);
return Fre;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{

LPBYTE res = GetNic();
WORD freq;
memcpy (&freq, res, 2);
ShowMessage("主頻:" IntToStr(freq) "\n");
delete [] res;

}
//---------------------------------------------------------------------------
hank73317
一般會員


發表:20
回覆:47
積分:13
註冊:2008-12-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-02-27 09:22:27 IP:122.146.xxx.xxx 訂閱
我試了一下這段code,好像還是無法找到CPU的頻率,麻煩一下各位高手了~~~~~
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-02-27 09:36:46 IP:118.169.xxx.xxx 訂閱
怎樣無法找到?
我試過可以取得該機碼的內容
hank73317
一般會員


發表:20
回覆:47
積分:13
註冊:2008-12-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-02-27 09:47:39 IP:122.146.xxx.xxx 訂閱
 在Run的時候部會有錯誤,布過按了button之後,會先跳出ShowMessage("錯誤:無法打開有關的hKEY!");,

之後會出現錯誤:Error: Project2.exe raised exeption class EAccessViolation with message 'Access violation at
address 00402B5A in module 'Project2.exe'.Read of address FFFFFFFF'.Process stoped.
Use Stop or Run to continue.

然後 memcpy (&freq, res, 2);,記憶體拷貝這段就被顯示錯誤~~~~~~
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-02-27 09:55:28 IP:118.169.xxx.xxx 訂閱
這是站上反映許久仍未改善的問題
DESCRIPTION
應該是
DESCRIPTION
hank73317
一般會員


發表:20
回覆:47
積分:13
註冊:2008-12-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-02-27 10:01:01 IP:122.146.xxx.xxx 訂閱
改了之後就可以了~~~~再次感謝了~~~~謝謝
系統時間:2024-04-20 10:53:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!