Code archives/Miscellaneous/CPU & Video System Information
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
Win32 only, the appropriate information is read from the Windows Registry. This will return the CPU make and model, number of cores, speed in MHz. Will also show information about ATI video adapters: Make/model, manfucaturer, graphic card drivers, memory. Sample output: Number of CPUs/cores: 2 CPU Speed in MHz : 2400 CPU Name String : Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz CPU Identifier : x86 Family 6 Model 15 Stepping 6 Vendor Identifier : GenuineIntel ATI Video Adapter : Radeon X1650 Series (0x00000000) Board Manufacturer : Hightech Information System Ltd. (0x000017af) ATI Device ID : 7291 (0x00007291) ATI BIOS Date : 01/01/07 (0x00010107) ATI Chip ID : RV560 (0x00000171) ATI 2D Driver : 6.14.10.6641 (0x00000000) ATI D3D Driver : 6.14.10.440 (0x00000000) ATI OGL Driver : 6.14.10.6120 (0x00000000) ATI Bus Type : PCI Express x16 (0x00000010) ATI Memory Size : 256 MB (0x00000200) ATI Memory Type : DDR3 (0x00000000) DirectX Version : 9.0c (0x09000000) | |||||
' Registry routines by gman ' keys by xlsior Framework BRL.StandardIO Import BRL.Bank Import BRL.Retro Import "-ladvapi32" 'Private Extern "win32" Function RegOpenKey:Int(hKeyParent:Int,SubKey$z,phkResult:Byte Ptr)="RegOpenKeyA@12" Function RegCloseKey:Int(hKey:Int)="RegCloseKey@4" Function RegEnumKey:Int(hKey:Int,idx:Int,Key:Byte Ptr,size:Int)="RegEnumKeyA@16" Function RegEnumValue:Int(hKey:Int,idx:Int,ValueName:Byte Ptr,NameSize:Byte Ptr,Reserved:Int,nType:Byte Ptr,ValueBytes:Byte Ptr,ValueSize:Byte Ptr)="RegEnumValueA@32" Function RegQueryValueEx:Int(hKey:Int,ValueName$z,Reserved:Int,nType:Byte Ptr,ValueBytes:Byte Ptr,ValueSize:Byte Ptr)="RegQueryValueExA@24" EndExtern 'Public Const HKEY_CLASSES_ROOT:Int = -2147483648 Const HKEY_CURRENT_USER:Int = -2147483647 Const HKEY_LOCAL_MACHINE:Int = -2147483646 Const HKEY_USERS:Int = -2147483645 Const REG_ERROR_SUCCESS:Int = 0 Const REG_ERROR_EOF:Int = 259 ' no more entries in key Const REG_SZ:Int = 1 ' Data String Const REG_BINARY:Int = 3 ' Binary Data in any form. Const REG_DWORD:Int = 4 ' A 32-bit number. ' Temporary Variables: temp:Int=0 maxcpu:Int=0 ' Cycle through to find how many CPU cores are present in the system: For temp=0 To 1024 If reg_iskey(HKEY_LOCAL_MACHINE,"hardware\description\system\centralprocessor\"+temp)=False Then maxcpu=temp Exit ' We found how many CPU's/Cores are present, so exit the loop End If Next Print "" Print "Number of CPUs/cores: "+(maxcpu) Print "CPU Speed in MHz : "+reg_getvalue(HKEY_LOCAL_MACHINE,"hardware\description\system\centralprocessor\0\","~~MHz","none",types:Int=True) Print "CPU Name String : "+reg_getvalue(HKEY_LOCAL_MACHINE,"hardware\description\system\centralprocessor\0\","processornamestring","none",types:Int=True) Print "CPU Identifier : "+reg_getvalue(HKEY_LOCAL_MACHINE,"hardware\description\system\centralprocessor\0\","identifier","none",types:Int=True) Print "Vendor Identifier : "+reg_getvalue(HKEY_LOCAL_MACHINE,"hardware\description\system\centralprocessor\0\","vendoridentifier","none",types:Int=True) Print "" If reg_iskey(HKEY_LOCAL_MACHINE,"software\ATI Technologies\CDS\0000\0")=True Then Print "ATI Video Adapter : "+reg_getvalue(HKEY_LOCAL_MACHINE,"SOFTWARE\ATI Technologies\CDS\0000\0\Driver\","Description","unknown",types:Int=True) Print "Board Manufacturer : "+reg_getvalue(HKEY_LOCAL_MACHINE,"SOFTWARE\ATI Technologies\CDS\0000\0\ASIC\","Graphics Card Manufacturer","unknown",types:Int=True) Print "ATI Device ID : "+reg_getvalue(HKEY_LOCAL_MACHINE,"SOFTWARE\ATI Technologies\CDS\0000\0\PCI Config\","Device ID","unknown",types:Int=True) Print "ATI BIOS Date : "+reg_getvalue(HKEY_LOCAL_MACHINE,"SOFTWARE\ATI Technologies\CDS\0000\0\BIOS\","Date","unknown",types:Int=True) Print "ATI Chip ID : "+reg_getvalue(HKEY_LOCAL_MACHINE,"SOFTWARE\ATI Technologies\CDS\0000\0\ASIC\","chip ID","unknown",types:Int=True) Print "ATI 2D Driver : "+reg_getvalue(HKEY_LOCAL_MACHINE,"SOFTWARE\ATI Technologies\CDS\0000\0\Driver\","2D Driver Version","unknown",types:Int=True) Print "ATI D3D Driver : "+reg_getvalue(HKEY_LOCAL_MACHINE,"SOFTWARE\ATI Technologies\CDS\0000\0\Driver\","D3D Driver Version","unknown",types:Int=True) Print "ATI OGL Driver : "+reg_getvalue(HKEY_LOCAL_MACHINE,"SOFTWARE\ATI Technologies\CDS\0000\0\Driver\","OGL Driver Version","unknown",types:Int=True) Print "ATI Bus Type : "+reg_getvalue(HKEY_LOCAL_MACHINE,"SOFTWARE\ATI Technologies\CDS\0000\0\ASIC\","Bus Type","unknown",types:Int=True) Print "ATI Memory Size : "+reg_getvalue(HKEY_LOCAL_MACHINE,"SOFTWARE\ATI Technologies\CDS\0000\0\Memory\","size","unknown",types:Int=True) Print "ATI Memory Type : "+reg_getvalue(HKEY_LOCAL_MACHINE,"SOFTWARE\ATI Technologies\CDS\0000\0\Memory\","type","unknown",types:Int=True) Print "DirectX Version : "+reg_getvalue(HKEY_LOCAL_MACHINE,"SOFTWARE\ATI Technologies\CDS\system\0\","directx version","unknown",types:Int=True) End If Global reg_lasterr:Int = REG_ERROR_SUCCESS Function reg_enumvalues:String(RegKey:Int,SubKey:String,delim:String="|",types:Int=False) Local cRetVal:String="",key:String="",val:String="" Local keybank:TBank=CreateBank(100),keybanksize:TBank=CreateBank(4),valbank:TBank=CreateBank(100),valbanksize:TBank=CreateBank(4),typebank:TBank=CreateBank(4) Local char:Int=0,nIdx:Int=0,nType:Int=0 ' open the key Local hKey:Int=reg_openkey(RegKey,SubKey:String) 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:String="" val:String="" If RegEnumValue(hKey,nIdx,BankBuf(keybank),BankBuf(keybanksize),0,BankBuf(typebank),BankBuf(valbank),BankBuf(valbanksize))<>REG_ERROR_EOF nType=PeekInt(typebank,0) ' tack on the delimiter If cRetVal:String<>"" cRetVal:String=cRetVal:String+delim:String EndIf ' build the key name For char=0 To PeekInt(keybanksize,0)-1 If PeekByte(keybank,char)=0 Then Exit key:String=key:String+Chr(PeekByte(keybank,char)) Next Select nType ' read in a String Or binary value Case REG_SZ, REG_BINARY ' build the value For char=0 To PeekInt(valbanksize,0)-1 If PeekByte(valbank,char)=0 Then Exit val:String=val:String+Chr(PeekByte(valbank,char)) Next ' read in an integer Case REG_DWORD val:String=PeekInt(valbank,0) End Select If types cRetVal:String=(cRetVal:String+PeekInt(typebank,0)+"'"+key:String+"="+val:String) Else cRetVal:String=(cRetVal:String+key:String+"="+val:String) EndIf Else Exit EndIf nIdx=nIdx+1 Forever reg_closekey(hKey) EndIf typebank = Null valbank = Null valbanksize = Null keybank = Null keybanksize = Null Return cRetVal:String End Function Rem bbdoc: Enumerates the keys contained in the passed subkey And returns them as a delimited String in the format:<br>KEY|KEY|KEY EndRem Function reg_enumkeys:String(RegKey:Int,SubKey:String,delim:String="|") Local cRetVal:String="" Local keybank:TBank=CreateBank(100) Local nIdx:Int=0,char:Int ' open the key first Local hKey:Int=reg_openkey(RegKey,SubKey:String) If hKey<>-1 Repeat If RegEnumKey(hKey,nIdx,BankBuf(keybank),BankSize(keybank))<>REG_ERROR_EOF ' tack on the delimiter If cRetVal:String<>"" cRetVal:String=cRetVal:String+delim:String EndIf For char=0 To BankSize(keybank)-1 If PeekByte(keybank,char)=0 Then Exit cRetVal:String=cRetVal:String+Chr(PeekByte(keybank,char)) Next Else Exit EndIf nIdx=nIdx+1 Forever reg_closekey(hKey) EndIf keybank = Null Return cRetVal:String End Function Function reg_getvalue:String(RegKey:Int,SubKey:String,ValueName:String,Dflt:String="",types:Int=False) Local cRetVal:String=Dflt:String Local hKey:Int=reg_openkey(RegKey,SubKey:String) Local char:Int=0,nType:Int=0 ' open the key If hKey<>-1 Local valbank:TBank=CreateBank(100),valbanksize:TBank=CreateBank(4),typebank:TBank=CreateBank(4) ' init the banks PokeInt(typebank,0,0) PokeInt(valbanksize,0,100) Local nRslt:Int=RegQueryValueEx(hKey,ValueName:String,0,BankBuf(typebank),BankBuf(valbank),BankBuf(valbanksize)) If (nRslt=REG_ERROR_SUCCESS) cRetVal:String="" nType=PeekInt(typebank,0) ' build the value Select nType ' read in a String Or binary value Case REG_SZ, REG_BINARY ' build the value For char=0 To PeekInt(valbanksize,0)-1 If PeekByte(valbank,char)=0 Then Exit cRetVal:String=cRetVal:String+Chr(PeekByte(valbank,char)) Next ' read in an integer Case REG_DWORD cRetVal:String=PeekInt(valbank,0) End Select ' tack on the Type If requested If types cRetVal:String=nType+"'"+cRetVal:String EndIf Else reg_lasterr=nRslt EndIf reg_closekey(hKey) EndIf Return cRetVal:String End Function Rem bbdoc: Returns the registry handle Or -1 If failed EndRem Function reg_openkey:Int(RegKey:Int,KeyName:String) reg_lasterr=REG_ERROR_SUCCESS Local regbank:TBank=CreateBank(4) Local hKey:Int=-1 Local nRslt:Int=RegOpenKey(RegKey:Int,KeyName:String,BankBuf(regbank)) If (nRslt=REG_ERROR_SUCCESS) hKey=PeekInt(regbank,0) Else reg_lasterr=nRslt EndIf regbank = Null Return hKey End Function Rem bbdoc: Closes the registry key. returns: #True / #False EndRem Function reg_closekey:Int(RegKey:Int) reg_lasterr=REG_ERROR_SUCCESS Local nRslt:Int=RegCloseKey(RegKey) If nRslt<>REG_ERROR_SUCCESS reg_lasterr=nRslt EndIf Return (nRslt=REG_ERROR_SUCCESS) End Function Rem bbdoc: Returns True If the key exists. EndRem Function reg_iskey:Int(RegKey:Int,KeyName:String) Local hKey:Int=reg_openkey(RegKey,KeyName:String) Local lRetVal:Int=False If hKey<>-1 reg_closekey(hKey) lRetVal=True EndIf Return lRetVal End Function |
Comments
None.
Code Archives Forum