vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: System/Windows · Sonstiges   |   VB-Versionen: VB5, VB626.01.05
Prozessor-Informationen ermitteln

Mit dieser Funktion lassen sich einige wichtige Eckdaten, wie Typ, CPU-Speed, etc. des Prozessors ermitteln.

Autor:   Microsys KramerBewertung:     [ Jetzt bewerten ]Views:  12.851 
www.access-paradies.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Unser heutige Tipp zeigt, wie sich einige wichtige Eckdaten des installierten Prozessors ermitteln lassen:

  • Anzahl der Prozessoren
  • Prozessor-Typ
  • Level und Revision
  • CPU-Speed

Fügen Sie hierzu nachfolgenden Code in ein Modul ein:

Option Explicit
 
' Benötigte API-Deklarationen
Private Const PROCESSOR_INTEL_386       As Long = 386
Private Const PROCESSOR_INTEL_486       As Long = 486
Private Const PROCESSOR_INTEL_PENTIUM   As Long = 586
Private Const PROCESSOR_MIPS_R4000      As Long = 4000
Private Const PROCESSOR_ALPHA_21064     As Long = 21064
Private Const PROCESSOR_PPC_601         As Long = 601
Private Const PROCESSOR_PPC_603         As Long = 603
Private Const PROCESSOR_PPC_604         As Long = 604
Private Const PROCESSOR_PPC_620         As Long = 620
Private Const PROCESSOR_HITACHI_SH3     As Long = 10003   ' Windows CE
Private Const PROCESSOR_HITACHI_SH3E    As Long = 10004   ' Windows CE
Private Const PROCESSOR_HITACHI_SH4     As Long = 10005   ' Windows CE
Private Const PROCESSOR_MOTOROLA_821    As Long = 821     ' Windows CE
Private Const PROCESSOR_SHx_SH3         As Long = 103     ' Windows CE
Private Const PROCESSOR_SHx_SH4         As Long = 104     ' Windows CE
Private Const PROCESSOR_STRONGARM       As Long = 2577    ' Windows CE - 0xA11
Private Const PROCESSOR_ARM720          As Long = 1824    ' Windows CE - 0x720
Private Const PROCESSOR_ARM820          As Long = 2080    ' Windows CE - 0x820
Private Const PROCESSOR_ARM920          As Long = 2336    ' Windows CE - 0x920
Private Const PROCESSOR_ARM_7TDMI       As Long = 70001   ' Windows CE
 
Private Const PROCESSOR_ARCHITECTURE_INTEL      As Long = 0
Private Const PROCESSOR_ARCHITECTURE_MIPS       As Long = 1
Private Const PROCESSOR_ARCHITECTURE_ALPHA      As Long = 2
Private Const PROCESSOR_ARCHITECTURE_PPC        As Long = 3
Private Const PROCESSOR_ARCHITECTURE_SHX        As Long = 4
Private Const PROCESSOR_ARCHITECTURE_ARM        As Long = 5
Private Const PROCESSOR_ARCHITECTURE_IA64       As Long = 6
Private Const PROCESSOR_ARCHITECTURE_ALPHA64    As Long = 7
Private Const PROCESSOR_ARCHITECTURE_UNKNOWN    As Long = &HFFFF&
 
Private Const PROCESSOR_LEVEL_80386         As Long = 3
Private Const PROCESSOR_LEVEL_80486         As Long = 4
Private Const PROCESSOR_LEVEL_PENTIUM       As Long = 5
Private Const PROCESSOR_LEVEL_PENTIUMII     As Long = 6
 
Private Const sCPURegKey = "HARDWARE\DESCRIPTION\System\CentralProcessor\0"
 
Private Const HKEY_LOCAL_MACHINE As Long = &H80000002
 
Private Type SYSTEM_INFO
  dwOemID As Long
  dwPageSize As Long
  lpMinimumApplicationAddress As Long
  lpMaximumApplicationAddress As Long
  dwActiveProcessorMask As Long
  dwNumberOfProcessors As Long
  dwProcessorType As Long
  dwAllocationGranularity As Long
  wProcessorLevel As Integer
  wProcessorRevision As Integer
End Type
 
Private Declare Sub GetSystemInfo Lib "kernel32" ( _
  lpSystemInfo As SYSTEM_INFO)
 
Private Declare Function RegCloseKey Lib "advapi32" ( _
  ByVal hKey As Long) As Long
 
Private Declare Function RegOpenKey Lib "advapi32" _
  Alias "RegOpenKeyA" ( _
  ByVal hKey As Long, _
  ByVal lpSubKey As String, _
  phkResult As Long) As Long
 
Private Declare Function RegQueryValueEx Lib "advapi32" _
  Alias "RegQueryValueExA" ( _
  ByVal hKey As Long, _
  ByVal lpValueName As String, _
  ByVal lpReserved As Long, _
  lpType As Long, _
  lpData As Any, _
  lpcbData As Long) As Long
 
Public Enum eProcInfo
  NumberOfProcessors = 0
  ProecssorType = 1
  PrcessorLevel = 2
  ProcessorRevision = 3
  ProcessorSpeed = 4
End Enum
' Hilfsfunktionen
Private Function HiByte(ByVal wParam As Integer) As Byte
  On Error GoTo ErrHandler
  HiByte = (wParam And &HFF00&) \ (&H100)
  On Error GoTo 0
 
ErrHandler:
End Function
 
Private Function LoByte(ByVal wParam As Integer) As Byte
  On Error GoTo ErrHandler
  LoByte = wParam And &HFF&
  On Error GoTo 0
 
ErrHandler:
End Function
' Ermittelt Daten rund um den Prozessor
Public Function ProzessorInfo(ByVal nInfo As eProcInfo) As String
  On Error GoTo ErrHandler
 
  Dim SI As SYSTEM_INFO
  Dim tmp As String
  Dim hKey As Long
  Dim cpuSpeed As Long
 
  On Error GoTo ErrHandler
 
  ' Sytem-Info holen
  Call GetSystemInfo(SI)
  Select Case nInfo
    Case eProcInfo.NumberOfProcessors
      ' Anzahl Prozessoren
      ProzessorInfo = SI.dwNumberOfProcessors
 
    Case eProcInfo.ProecssorType
      ' Prozessortyp
      Select Case SI.dwProcessorType
        Case PROCESSOR_INTEL_386: tmp = "386"
        Case PROCESSOR_INTEL_486: tmp = "486"
        Case PROCESSOR_INTEL_PENTIUM: tmp = "Pentium"
        Case PROCESSOR_MIPS_R4000: tmp = "MIPS 4000"
        Case PROCESSOR_ALPHA_21064: tmp = "Alpha"
      End Select
      ProzessorInfo = SI.dwProcessorType & " " & tmp
 
    Case eProcInfo.PrcessorLevel
      ' Level
      Select Case SI.wProcessorLevel
        Case PROCESSOR_LEVEL_80386: tmp = "Intel 80386"
        Case PROCESSOR_LEVEL_80486: tmp = "Intel 80486"
        Case PROCESSOR_LEVEL_PENTIUM: tmp = "Intel Pentium"
        Case PROCESSOR_LEVEL_PENTIUMII: tmp = "Intel Pentium Pro, II, III oder 4"
      End Select
      ProzessorInfo = SI.wProcessorLevel & " - " & tmp
 
    Case eProcInfo.ProcessorRevision
      ' Revision
      ProzessorInfo = SI.wProcessorRevision & _
        ", Model " & HiByte(SI.wProcessorRevision) & _
        ", Stepping " & LoByte(SI.wProcessorRevision)
 
    Case eProcInfo.ProcessorSpeed
      ' CPU-Geschwindigkeit
      Call RegOpenKey(HKEY_LOCAL_MACHINE, sCPURegKey, hKey)
      Call RegQueryValueEx(hKey, "~MHz", 0, 0, cpuSpeed, 4)
      Call RegCloseKey(hKey)
      If cpuSpeed < 1000 Then
        ProzessorInfo = Format(cpuSpeed, "##0.##") & " MHz"
      Else
        ProzessorInfo = Format((cpuSpeed / 1000), "##0.##") & " GHz"
      End If
 
    Case Else
      ProzessorInfo = "Die Information konnte nicht ermittelt werden"
  End Select
  On Error GoTo 0
  Exit Function
 
ErrHandler:
  ProzessorInfo = "Die Information konnte nicht ermittelt werden"
End Function

Beispiel für den Aufruf:

List1.AddItem "Prozessor-Typ: " & ProzessorInfo(NumberOfProcessors)
List1.AddItem "CPU-Speed: " & ProzessorInfo(ProcessorSpeed)

Dieser Tipp wurde bereits 12.851 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel