I wish to have a native command to get the CPU name. I provide a custom one, maybe it can be used as base to create the native one.
Best regards
Guimauve
Code: Select all
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Project name : GetSystemCPUName
; File Name : GetSystemCPUName.pb
; File version: 1.0.1
; Programming : OK
; Programmed by : Progi1984, Dobro, jack, Guimauve
; Date : 20-02-2010
; Last Update : 17-02-2013
; PureBasic code : V5.10
; Platform : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
ImportC "/usr/lib/libc.dylib"
sysctlbyname(s.s,*buffer,*length,*null,*null2)
EndImport
CompilerEndIf
Procedure.s GetSystemCPUName()
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Linux
Protected lProgram.l
Protected sOutput.s
lProgram = RunProgram("grep", Chr(34) + "model name" + Chr(34) + " /proc/cpuinfo", "", #PB_Program_Open|#PB_Program_Read)
If lProgram
sOutput = ReadProgramString(lProgram)
sOutput = ReplaceString(sOutput, "model name", "")
sOutput = ReplaceString(sOutput, ":", "")
sOutput = Trim(sOutput)
ProcedureReturn Trim(RemoveString(sOutput, Chr(9)))
Else
ProcedureReturn ""
EndIf
CompilerCase #PB_OS_MacOS
Protected *MemBuffer, lMemLength.l = 128, sOutput.s
*MemBuffer = AllocateMemory(lMemLength)
If *MemBuffer <> #Null
sysctlbyname("machdep.cpu.brand_string", *MemBuffer, @lMemLength, 0, 0)
sOutput.s = PeekS(*MemBuffer)
FreeMemory(*MemBuffer)
Else
sOutput.s = ""
EndIf
ProcedureReturn sOutput
CompilerCase #PB_OS_Windows
Protected sSubKey.s, sKeyValue.s, sResult.s
Protected lKey.l, lResultLen.l
sSubKey = "HARDWARE\DESCRIPTION\System\CentralProcessor\0"
sKeyValue = "ProcessorNameString"
sResult = Space(255)
lResultLen = 255
If RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, sSubKey, #Null, #KEY_READ, @lKey) = #ERROR_SUCCESS
If lKey
If RegQueryValueEx_(lKey, sKeyValue, 0, 0, @sResult, @lResultLen) = #ERROR_SUCCESS
ProcedureReturn sResult
EndIf
RegCloseKey_(lKey)
EndIf
EndIf
CompilerEndSelect
EndProcedure
Debug GetSystemCPUName()
; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<