取得條碼機中的CPU頻率 |
答題得分者是:taishyang
|
hank73317
一般會員 發表:20 回覆:47 積分:13 註冊:2008-12-12 發送簡訊給我 |
請問各位高手,我要找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 發送簡訊給我 |
//---------------------------------------------------------------------------
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 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
hank73317
一般會員 發表:20 回覆:47 積分:13 註冊:2008-12-12 發送簡訊給我 |
在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 發送簡訊給我 |
|
hank73317
一般會員 發表:20 回覆:47 積分:13 註冊:2008-12-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |