| :: How to obtain the Description of the System's Processor |
Author |
Andrea Tincani |
Language |
VB5, VB6 |
Operating
Systems |
Windows 95, 98 and NT |
| API
Declarations |
'API Structures
Public Type SYSTEM_INFO
wProcessorArchitecture As Integer
wReserved As Integer
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
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
'API Calls
Public Declare Sub GetSystemInfo Lib "kernel32.dll" (lpSystemInfo As SYSTEM_INFO)
Public Declare Function GetVersionEx Lib "kernel32.dll" Alias "GetVersionExA"
(lpVersionInformation As OSVERSIONINFO) As Long
'API Constants
Public Const PROCESSOR_ARCHITECTURE_ALPHA = 2
Public Const PROCESSOR_ARCHITECTURE_INTEL = 0
Public Const PROCESSOR_ARCHITECTURE_MIPS = 1
Public Const PROCESSOR_ARCHITECTURE_PPC = 3
Public Const PROCESSOR_ARCHITECTURE_UNKNOWN = &HFFFF
Public Const PROCESSOR_INTEL_386 = 386
Public Const PROCESSOR_INTEL_486 = 486
Public Const PROCESSOR_INTEL_PENTIUM = 586
Public Const PROCESSOR_INTEL_PENTIUM2 = 686
Public Const PROCESSOR_INTEL_PENTIUM3 = 786
Public Const PROCESSOR_MIPS_R4000 = 4000
Public Const VER_PLATFORM_WIN32_NT = 2
Public Const VER_PLATFORM_WIN32_WINDOWS = 1 |
| Module |
'get a string with the description of the system's processor
Public Function GetProcessorType() As
String
Dim si As SYSTEM_INFO
Dim os As OSVERSIONINFO
'retrive the
Windows Platform
os.dwOSVersionInfoSize = Len(os)
GetVersionEx os
'retrive the
SYSTEM_INFO Structure
GetSystemInfo si
Select Case si.wProcessorArchitecture
'Intel
Architecture
Case PROCESSOR_ARCHITECTURE_INTEL
Select Case os.dwPlatformId
Case VER_PLATFORM_WIN32_NT
Select Case
si.wProcessorLevel
Case 3
GetProcessorType = "Intel 80386"
If (si.wProcessorRevision And &HFF00) = &HFF00 Then
GetProcessorType = GetProcessorType And " Model " & ((si.wProcessorRevision
And &HF0) / &HF) - 10 & " Stepping " & (si.wProcessorRevision
And &HF)
Else
GetProcessorType = GetProcessorType And " Stepping " &
Chr(Asc("A") + (si.wProcessorRevision And &HFF) / &HFF) & "
Stepping " & (si.wProcessorRevision And &HFF)
End If
Case 4
GetProcessorType = "Intel 80486"
If (si.wProcessorRevision And &HFF00) = &HFF00 Then
GetProcessorType = GetProcessorType And " Model " & ((si.wProcessorRevision
And &HF0) / &HF) - 10 & " Stepping " & (si.wProcessorRevision
And &HF)
Else
GetProcessorType = GetProcessorType And " Stepping " &
Chr(Asc("A") + (si.wProcessorRevision And &HFF) / &HFF) & "
Stepping " & (si.wProcessorRevision And &HFF)
End If
Case 5
GetProcessorType = "Pentium Model " & (si.wProcessorRevision And &HFF00)
\ &HFF & " Stepping " & (si.wProcessorRevision And &HFF)
Case 6
GetProcessorType = "Pentium II Model " & (si.wProcessorRevision And
&HFF00) \ &HFF & " Stepping " & (si.wProcessorRevision And
&HFF)
Case 7
GetProcessorType = "Pentium III Model " & (si.wProcessorRevision And
&HFF00) \ &HFF & " Stepping " & (si.wProcessorRevision And
&HFF)
End Select
Case VER_PLATFORM_WIN32_WINDOWS
Select Case
si.dwProcessorType
Case
PROCESSOR_INTEL_386
GetProcessorType = "Intel 80386"
Case
PROCESSOR_INTEL_486
GetProcessorType = "Intel 80486"
Case
PROCESSOR_INTEL_PENTIUM
GetProcessorType = "Pentium"
Case
PROCESSOR_INTEL_PENTIUM2
GetProcessorType = "Pentium II"
Case
PROCESSOR_INTEL_PENTIUM3
GetProcessorType = "Pentium III"
End Select
End Select
'MIPS
Architecture (only for WinNT)
Case PROCESSOR_ARCHITECTURE_MIPS
GetProcessorType = "MIPS R" &
si.wProcessorLevel & "000"
'ALPHA
Architecture (only for WinNT)
Case PROCESSOR_ARCHITECTURE_ALPHA
GetProcessorType = "Alpha " &
si.wProcessorLevel & " Model A" & (si.wProcessorRevision And &HFF00)
\ &HFF & " Pass " & (si.wProcessorRevision And &HFF)
'PPC
Architecture (only for WinNT)
Case PROCESSOR_ARCHITECTURE_PPC
Select Case si.wProcessorLevel
Case 1, 3, 4, 20
GetProcessorType =
"PPC 6" & Format(si.wProcessorLevel, "00")
Case 6
GetProcessorType =
"PPC 603+"
Case 9
GetProcessorType =
"PPC 604+"
End Select
GetProcessorType = GetProcessorType &
" Processor Version " & (si.wProcessorRevision And &HFF00) \ &HFF
& "." & (si.wProcessorRevision And &HFF)
End Select
End Function |
| Usage |
Private Sub Command1_Click()
MsgBox GetProcessorType
End Sub |
|
 |
|
 |