CPU auslesen?
Übersicht

![]() |
SereyanneBetreff: CPU auslesen? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
ich schon wieder ![]() Ist es mit BB (Plus) möglich, auszulesen, welche CPU der Rechner hat bzw. wieviel GHz? LG, Sereyanne |
||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nur per DLL ist das möglich, suche einfach mal nach CPU Speed oder so, mach ich auch mal, habe vergessen wie die hieß ![]() Edit: So gefunden: https://www.blitzforum.de/foru...hlight=cpu |
||
It's done when it's done. |
![]() |
Hagbard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiß leider nicht, ob das in den anderen Windows-Versionen auch so ist, das müsstet du mal herauskriegen. Bei WinXP kannst du diese Daten aus der Registry auslesen:
HKEY_LOCAL_MACHINE --> HARDWARE --> DESCRIPTION --> System --> CentralProcessor --> 0 Dort hast du dann drei Zeichenfolgen, die dir Auskunft über Hersteller, Art des Prozessors usw. angibt. So jetzt fragst du dich, wie greife ich auf die Registry zu? Vielleicht auf diese Weise oder so, du wirst durch eine Suche aber noch andere Möglichkeiten finden. Viel Erfolg! |
||
![]() |
Sereyanne |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wow, das sieht spannend aus.
Vielen Dank, da hab ich wieder was zu tun! |
||
![]() |
Sereyanne |
![]() Antworten mit Zitat ![]() |
---|---|---|
*Thread wieder ausgrab*
Pummelies Text scheint mir für 3D zu sein, zumindest läuft es bei mir unter Plus nicht. Dennoch danke für den Versuch. @Hagbard: Im Prinzip verweisen beide von dir verlinkten Threads im Endeffekt auf denselben Code. https://www.blitzforum.de/foru...hp?t=14920 Da kommt er z. B. von x-pressive. Wenn mir jetzt noch jemand auf die Sprünge helfen könnte, wo ich jetzt da in dem ganzen Wirrwarr die GHz auslese, das wäre echt super! Das Programm zeigt ja leider nichts an, da keine Schleife zum Anzeigen verwendet wird. Und ich krieg das auch noch nicht hin, mich da durchzuwurschteln. ![]() Wie arbeite ich an der Stelle also weiter? Sorry bin noch kein so großer Pro auf dem Gebiet! Freue mich auf eure Antworten! Vielen lieben Dank, Sereyanne |
||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Miep, das was ich gepostet habe funktioniert (naja so halb, bei usage zeigt es mir -1% an ![]() Hier mal Code: BlitzBasic: [AUSKLAPPEN]
Wichtig ist, das du die dll immer neben deiner.bb datei (oder exe) hast, du kannst den Pfad aber auch mit der Variable dll$ anpassen. |
||
It's done when it's done. |
![]() |
Sereyanne |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Pummelie,
vielen Dank. Dein erster Post verlinkte auf einen Thread, in dem ein Code gepostet ist, der nicht auf Plus läuft wegen "Funtion Locate not found". In 3D läuft er, liefert aber leider das selbe Ergebnis wie dein neuer Plus-fähige Code: Es wird ein Wert von -1654 MHz angezeigt! Wie kann denn mein Rechner mit einem Minuswert laufen?? Außerdem sollten es 2,64 GHz sein! Ist auch nur eine Single Core CPU, also wo liegt das Problem? Hast du da vielleicht noch eine Idee? Wie gesagt, ich blick bei dem Code nicht so ganz durch, zumal man ja auch nicht in die dlls reingucken kann! LG, Sereyanne |
||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, die dll ist schon älter, möglich das sie nicht immer funktioniert... | ||
It's done when it's done. |
![]() |
Sereyanne |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist jetzt dein Ernst?? So ein Sch..!
Kann man die dll auf neuere Systeme anpassen oder was soll ich jetzt damit anfangen...? |
||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Frage doch mal beim Autor an (sollte dieser noch anktiv sein). | ||
It's done when it's done. |
![]() |
Hagbard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und bezüglich meiner Lösung würde ich dir mal empfehlen, die Daten mit einem Registry-Editor erstmal anzusehen, damit du weißt, wie du die auslesen kannst... | ||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
SET reicht nicht? bei mir kann man da immerhin:
Code: [AUSKLAPPEN] PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 10, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=170a NUMBER_OF_PROCESSORS=4 auslesen |
||
![]() |
Sereyanne |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Hagbard: Ich weiß wie ich im Windows auf die Registry zugreife, und da steht auch schön ordentlich 2640 MHz drin. Ich weiß nur nicht, wie ich das im BP mache, aber da hab ich schon im entsprechenden Thread angefragt.
@Silver_Knee: sorry, damit kann ich jetzt irgendwie gar nichts anfangen... ![]() |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das sind weitere Angaben zu deiner CPU,
X86 Architektur 4 Kerne usw |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
das sind umgebungsvariablen, da stehen immerhin diese informationen drin. Weiß ja nicht was du genau vom Prozessor auslesen willst | ||
![]() |
Sereyanne |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich will eigentlich nur die MHz von der CPU auslesen, steht auch in meinem allerersten Post drin... nur irgendwie komm ich nicht weiter, wie ich das nun mit Plus anstelle... | ||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hf
Code: [AUSKLAPPEN] ;.lib "Advapi32.dll"
;ADVAPI32_RegOpenKey%(hKeyParent%,SubKey$,phkResult*):"RegOpenKeyA" ;ADVAPI32_RegCloseKey%(hKey%):"RegCloseKey" ;ADVAPI32_RegFlushKey%(hKey%):"RegFlushKey" ;ADVAPI32_RegCreateKey%(hKeyParent%,SubKey$,phkResult*):"RegCreateKeyA" ;ADVAPI32_RegDeleteKey%(hKeyParent%,SubKey$):"RegDeleteKeyA" ;ADVAPI32_RegSetValueEx%(hKey%,ValueName$,Reserved%,nType%,Bytes*,size%):"RegSetValueExA" ;ADVAPI32_RegDeleteValue%(hKey%,ValueName$):"RegDeleteValueA" ;ADVAPI32_RegEnumKey%(hKey%,idx%,Key*,size%):"RegEnumKeyA" ;ADVAPI32_RegEnumValue%(hKey%,idx%,ValueName*,NameSize*,Reserved%,nType*,ValueBytes*,ValueSize*):"RegEnumValueA" ;ADVAPI32_RegQueryValueEx%(hKey%,ValueName$,Reserved%,nType*,ValueBytes*,ValueSize*):"RegQueryValueExA" ;--------------------------------------------------- ; REQUIRES ADVAPI32.DECLS ;--------------------------------------------------- ; REGISTRY ROOTS Const HKEY_CLASSES_ROOT = -2147483648 Const HKEY_CURRENT_USER = -2147483647 Const HKEY_LOCAL_MACHINE = -2147483646 Const HKEY_USERS = -2147483645 ; RETURN VALUE CONSTANTS Const ERROR_SUCCESS = 0 Const ERROR_EOF = 259 ; NO MORE ENTRIES IN KEY ; DATA TYPES FOR KEYS Const REG_SZ = 1 ; DATA STRING Const REG_EXPAND_SZ = 2 Const REG_BINARY = 3 ; BINARY DATA IN ANY FORM. Const REG_DWORD = 4 ; A 32-BIT NUMBER. Const REG_MULTI_SZ = 7 ; GLOBAL VAR HOLDING LAST ERROR # Global reg_lasterr = ERROR_SUCCESS Print Reg_GetOSVersion$ Print Reg_GetOSLanguage$ Print Reg_GetValue(HKEY_LOCAL_MACHINE,"HARDWARE\DESCRIPTION\System\CentralProcessor\0","~MHz") WaitKey ;--------------------------------------------------- ; ENUMERATES THE KEYS CONTAINED IN THE PASSED SUBKEY ; AND RETURNS THEM AS A DELIMITED STRING IN THE FORMAT: ; KEY=VALUE|KEY=VALUE|KEY=VALUE ;--------------------------------------------------- Function Reg_EnumValues$(RegKey%,SubKey$,delim$="|\",types=False) Local cRetVal$ = "\",key$="\",val$="\" Local keybank = CreateBank(100),keybanksize=CreateBank(4),valbank=CreateBank(100),valbanksize=CreateBank(4),typebank=CreateBank(4) Local char = 0 Local nIdx = 0 Local nType = 0 ; OPEN THE KEY Local hKey = Reg_OpenKey(RegKey,SubKey$) If hKey<>-1 ; READ IN THE VALUES Repeat ; INIT THE BANKS PokeInt (typebank,0,0) PokeInt (valbanksize,0,100) PokeInt (keybanksize,0,100) ; CLEAR OUT THE TEMP VALUES key$="\" val$="\" If ADVAPI32_RegEnumValue(hKey,nIdx,keybank,keybanksize,0,typebank,valbank,valbanksize)<>ERROR_EOF nType = PeekInt(typebank,0) ; TACK ON THE DELIMITER If cRetVal$<>"\" cRetVal$ = cRetVal$+delim$ EndIf ; BUILD THE KEY NAME For char = 0 To PeekInt (keybanksize,0)-1 If PeekByte (keybank,char)=0 Then Exit key$ = key$ + Chr(PeekByte(keybank,char)) Next Select nType ; READ IN A STRING OR BINARY VALUE Case REG_SZ, REG_BINARY, REG_EXPAND_SZ ; BUILD THE VALUE For char = 0 To PeekInt (valbanksize,0)-1 If PeekByte (valbank,char) = 0 Then Exit val$ = val$ + Chr(PeekByte (valbank,char)) Next ; READ IN AN INTEGER Case REG_DWORD val$ = PeekInt(valbank,0) End Select If types cRetVal$ = (cRetVal$+PeekInt(typebank,0)+";\"+key$+"=\"+val$) Else cRetVal$ = (cRetVal$+key$+"=\"+val$) EndIf Else Exit EndIf nIdx=nIdx+1 Forever Reg_CloseKey(hKey) EndIf FreeBank typebank FreeBank valbank FreeBank valbanksize FreeBank keybank FreeBank keybanksize Return cRetVal$ End Function ;--------------------------------------------------- ; ENUMERATES THE KEYS CONTAINED IN THE PASSED SUBKEY ; AND RETURNS THEM AS A DELIMITED STRING IN THE FORMAT: ; KEY|KEY|KEY ;--------------------------------------------------- Function Reg_EnumKeys$(RegKey%,SubKey$,delim$="|\") Local cRetVal$ = "\" Local keybank = CreateBank(100) Local nIdx = 0 ; OPEN THE KEY FIRST Local hKey=Reg_OpenKey(RegKey,SubKey$) If hKey <> -1 Repeat If ADVAPI32_RegEnumKey(hKey,nIdx,keybank,BankSize(keybank))<>ERROR_EOF ; TACK ON THE DELIMITER If cRetVal$ <> "\" cRetVal$=cRetVal$+delim$ EndIf For char = 0 To BankSize (keybank)-1 If PeekByte (keybank,char)=0 Then Exit cRetVal$ = cRetVal$ + Chr(PeekByte (keybank,char)) Next Else Exit EndIf nIdx = nIdx + 1 Forever Reg_CloseKey(hKey) EndIf FreeBank keybank Return cRetVal$ End Function ;--------------------------------------------------- ; DELETES A VALUE FROM THE REGISTRY. RETURNS TRUE/FALSE. ;--------------------------------------------------- Function Reg_DeleteValue%(RegKey%,SubKey$,ValueName$) Local hKey = Reg_OpenKey(RegKey,SubKey$) Local lRetVal = False If hKey <> -1 Local nRslt = ADVAPI32_RegDeleteValue(hKey,ValueName$) If (nRslt = ERROR_SUCCESS) lRetVal = True Else reg_lasterr = nRslt EndIf Reg_CloseKey(hKey) EndIf Return lRetVal End Function ;--------------------------------------------------- ; GETS A VALUE FROM THE REGISTRY AND RETURNS IT AS A STRING. ; WILL RETURN THE PASSED DEFAULT IF THE VALUE REQUESTED IS ; NOT FOUND IN THE REGISTRY. ;--------------------------------------------------- Function Reg_GetValue$(RegKey%,SubKey$,ValueName$,Dflt$="\",types=False) Local cRetVal$ = Dflt$ Local hKey = Reg_OpenKey(RegKey,SubKey$) Local char = 0 Local nType = 0 ; OPEN THE KEY If hKey<>-1 Local valbank = CreateBank(100) Local valbanksize = CreateBank(4) Local typebank = CreateBank(4) ; INIT THE BANKS PokeInt (typebank,0,0) PokeInt (valbanksize,0,100) Local nRslt = ADVAPI32_RegQueryValueEx(hKey,ValueName$,0,typebank,valbank,valbanksize) If nRslt = ERROR_SUCCESS cRetVal$ = "\" nType = PeekInt(typebank,0) ; BUILD THE VALUE Select nType ; READ IN A STRING OR BINARY VALUE Case REG_SZ, REG_BINARY, REG_EXPAND_SZ ; BUILD THE VALUE For char = 0 To PeekInt (valbanksize,0)-1 If PeekByte (valbank,char) = 0 Then Exit cRetVal$ = cRetVal$ + Chr(PeekByte(valbank,char)) Next ; READ IN AN INTEGER Case REG_DWORD cRetVal$ = PeekInt(valbank,0) End Select ; TACK ON THE TYPE IF REQUESTED If types Then cRetVal$ = nType + ";\" + cRetVal$ Else reg_lasterr = nRslt EndIf Reg_CloseKey(hKey) EndIf Return cRetVal$ End Function ;--------------------------------------------------- ; SETS A VALUE IN THE REGISTRY. DEFAULTS TO TYPE STRING, ; BUT CAN PASS REG_DWORD AND REG_BINARY. RETURNS TRUE/FALSE. ;--------------------------------------------------- Function Reg_SetValue%(RegKey%,SubKey$,ValueName$,Value$,nType=REG_SZ) Local hKey = Reg_OpenKey(RegKey,SubKey$) Local lRetVal = False If hKey <> -1 Local valbank ; CREATE A BANK TO HOLD THE INFO Select nType Case REG_SZ, REG_BINARY, REG_EXPAND_SZ valbank = CreateBank(Len(Value$)) For i = 1 To Len(Value$) PokeByte(valbank,i-1,Asc(Mid(Value$,i,1))) Next Case REG_DWORD valbank = CreateBank(4) PokeInt (valbank,0,Int(Value$)) End Select Local nRslt = ADVAPI32_RegSetValueEx(hKey,ValueName$,0,nType,valbank,BankSize(valbank)) If nRslt = ERROR_SUCCESS lRetVal = True Else reg_lasterr = nRslt EndIf Reg_CloseKey(hKey) EndIf Return lRetVal End Function ;--------------------------------------------------- ; DELETES THE PASSED KEY FROM THE REGISTRY. RETURNS TRUE/FALSE. ;--------------------------------------------------- Function Reg_DeleteKey%(RegKey%,KeyName$) reg_lasterr=ERROR_SUCCESS Local nRslt=ADVAPI32_RegDeleteKey(RegKey,KeyName$) If nRslt<>ERROR_SUCCESS reg_lasterr=nRslt EndIf Return (nRslt=ERROR_SUCCESS) End Function ;--------------------------------------------------- ; RETURNS THE REGISTRY HANDLE OR -1 IF FAILED. ;--------------------------------------------------- Function Reg_CreateKey%(RegKey%,KeyName$) reg_lasterr = ERROR_SUCCESS Local regbank = CreateBank(4) Local hKey = -1 Local nRslt = ADVAPI32_RegCreateKey (RegKey%,KeyName$,regbank) If nRslt = ERROR_SUCCESS hKey = PeekInt(regbank,0) Else reg_lasterr = nRslt EndIf FreeBank regbank Return hKey End Function ;--------------------------------------------------- ; RETURNS THE REGISTRY HANDLE OR -1 IF FAILED ;--------------------------------------------------- Function Reg_OpenKey%(RegKey%,KeyName$) reg_lasterr = ERROR_SUCCESS Local regbank = CreateBank(4) Local hKey = -1 Local nRslt = ADVAPI32_RegOpenKey(RegKey%,KeyName$,regbank) If nRslt = ERROR_SUCCESS hKey=PeekInt(regbank,0) Else reg_lasterr=nRslt EndIf FreeBank regbank Return hKey End Function ;--------------------------------------------------- ; CLOSES THE REGISTRY KEY. RETURNS TRUE/FALSE. ;--------------------------------------------------- Function Reg_CloseKey%(RegKey%) reg_lasterr = ERROR_SUCCESS Local nRslt = ADVAPI32_RegCloseKey(RegKey) If nRslt <> ERROR_SUCCESS Then reg_lasterr=nRslt Return (nRslt = ERROR_SUCCESS) End Function ;--------------------------------------------------- ; RETURNS TRUE IF THE KEY EXISTS ;--------------------------------------------------- Function Reg_IsKey%(RegKey%,KeyName$) Local hKey = Reg_OpenKey(RegKey,KeyName$) Local lRetVal = False If hKey<>-1 Then Reg_CloseKey(hKey) : lRetVal = True Return lRetVal End Function ;--------------------------------------------------- ;--------------------------------------------------- ; FUNCTION: RETURNS OS LANGUAGE ;--------------------------------------------------- Function Reg_GetOSLanguage$() key$ = "Control Panel\International\" KeyHandle = Reg_OpenKey(HKEY_CURRENT_USER,key$) If KeyHandle <> -1 Then ;GERMAN = \"DEU\" value$ = Reg_GetValue(HKEY_CURRENT_USER,key$,"sLanguage\") Reg_CloseKey(KeyHandle) Else ; DID NOT FIND - FAIL SILENTLY value$ = "Unknown\" End If Return value$ End Function ;--------------------------------------------------- ; FUNCTION: RETURNS OS VERSION ;--------------------------------------------------- Function Reg_GetOSVersion$() key$ = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\" KeyHandle% = Reg_OpenKey(HKEY_LOCAL_MACHINE,key$) If KeyHandle <> -1 Then ;WIN XP = \"Microsoft Windows XP\" value$ = Reg_GetValue(HKEY_LOCAL_MACHINE,key$,"ProductName\") Reg_CloseKey(KeyHandle) Else ; DID NOT FIND - FAIL SILENTLY value$ = "Unknown\" EndIf Return value$ End Function ;--------------------------------------------------- ; FUNCTION: REGISTERS A FILE EXTENSION TO THE .EXE ;--------------------------------------------------- Function Reg_RegisterFileType(extension$,exeName$) If Mid(extension$,1,1) <> ".\" Then extension$ = ".\" + extension$ extension$ = Lower(extension$) typeName$ = Right(extension$,3) + "file\" If Right(exeName$,4) <> ".exe\" Then exeName$ = exeName$ + ".exe\" KeyHandle% = Reg_CreateKey (HKEY_CLASSES_ROOT,extension$) If KeyHandle <> -1 Then Reg_SetValue (HKEY_CLASSES_ROOT,extension$,"\",typeName$,REG_SZ) Reg_CloseKey(KeyHandle) End If KeyHandle% = Reg_CreateKey (HKEY_CLASSES_ROOT,typeName + "\shell\open\command\" ) If KeyHandle <> -1 Then Reg_SetValue (HKEY_CLASSES_ROOT,typeName + "\shell\open\command\","\",Chr(34) + CurrentDir() + exeName$ + Chr(34) + " %1\",REG_SZ) Reg_CloseKey(KeyHandle) End If KeyHandle% = Reg_CreateKey (HKEY_CLASSES_ROOT,typeName + "\DefaultIcon\" ) If KeyHandle <> -1 Then Reg_SetValue (HKEY_CLASSES_ROOT,typeName + "\DefaultIcon\","\",Chr(34) + CurrentDir() + exeName$ + Chr(34) + ",0\",REG_SZ) Reg_CloseKey(KeyHandle) End If End Function |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Sereyanne |
![]() Antworten mit Zitat ![]() |
---|---|---|
Herzlichen Dank, so weit war ich schon, und jetzt weiß ich auch wie ich damit arbeite!
Ist somit erledigt, danke an alle! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group