Récupérer le nom du processeur

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Récupérer le nom du processeur

Message par Progi1984 »

Permet de récupérer le nom du processeur. (Par exemple : "Intel(R) Core(TM)2 Duo CPU T8100 @ 2.10GHz")

Source : http://blog.developpez.com/progi1984/p7 ... /#more7482

Code : Tout sélectionner

;@@windows
;@author Progi1984
;@author Dobro
;@@linux
;@author Progi1984
;@@macos
;@author jack
;@link http://www.purebasic.fr/english/viewtopic.php?p=282943#282943
ProcedureDLL.s System_GetCPUInfo()
  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 sOutput
      Else
        ProcedureReturn ""
      EndIf
    ;}
    CompilerCase #PB_OS_MacOS ;{
      ImportC "/usr/lib/libc.dylib"
        sysctlbyname.l(s.s,*buffer,*length,*null,*null2)
      EndImport
      Protected *MemBuffer
      Protected lMemLength.l = 128
      *MemBuffer = AllocateMemory(lMemLength)
      sysctlbyname("machdep.cpu.brand_string", *MemBuffer, @lMemLength, 0, 0)
      ProcedureReturn PeekS(*MemBuffer)
    ;}
    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 System_GetCPUInfo()
Dernière modification par Progi1984 le lun. 13/avr./2009 21:29, modifié 1 fois.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Ne fonctionne pas sous window XP
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

......................
Dernière modification par Backup le sam. 19/mars/2011 18:25, modifié 1 fois.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Aprés modif, pourriez vous retester le code, svp ?

Merci Dobro...
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

moi sous xp pro sa fonctionne mais sa fonctionner avant aussi :wink:




@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Simplement un problème de droits pour la lecture d'un clé.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

fonctionne sous XP familiale :)
Répondre