Visitas
Muitas vezes é necessário identificar qual a versão do windows está sendo usado. O código abaixo mostra como fazer isso.
O código identifica exatamente se a versão do Windows é 3.X, 98, 98, 98 SE, ME, NT, 2000, XP ou se é uma versão 64 Bits. Não foi possível testar e identificar as versões Vista, 2003 e Seven, porém quem desejar basta utilizar o código e testar o valor das variáveis. Como não foi testado nessas versões, não é possível garantir o seu funcionamento para estas.
Crie um módulo e insira as seguintes linhas
Public Type T_WINVER
PlatformID As Long
VersionName As String
VersionNo As String
ServicePack As String
BuildNo As String
End Type
Public Type T_OSVersionInfo
OSVSize As Long
dwVerMajor As Long
dwVerMinor As Long
dwBuildNumber As Long
PlatformID As Long
szCSDVersion As String * 128
End Type
Public Const VER_PLATFORM_WIN32s = 0
Public Const VER_PLATFORM_WIN32_WINDOWS = 1
Public Const VER_PLATFORM_WIN32_NT = 2
Public Declare Function GetVersionEx Lib "Kernel32" _
Alias "GetVersionExA" _
(lpVersionInformation As T_OSVersionInfo) As Long
No mesmo módulo, ou no seu form inclua as linhas abaixo. O detalhe é que se resolver colocar essa rotina dentro do mesmo módulo a rotina tera que ser publica ou seja:
Public Sub getWindowsVersion(ByRef win As T_WINVER)
Private Sub getWindowsVersion(ByRef win As T_WINVER)
Dim OSVersionInfo As T_OSVersionInfo
Dim pos As Integer
Dim sVer As String
Dim sBuild As String
OSVersionInfo.OSVSize = Len(OSVersionInfo)
If GetVersionEx(OSVersionInfo) = 1 Then
#If Win32 Then
'PlatformId contém o valor que representan o SO
'no mesmo PlatformId o Windows pode variar de acordo com a versão
'do sistema
win.PlatformID = OSVersionInfo.PlatformID
Select Case OSVersionInfo.PlatformID
Case VER_PLATFORM_WIN32s:
win.VersionName = "Win32s"
Case VER_PLATFORM_WIN32_NT:
win.VersionName = "Windows NT"
Select Case OSVersionInfo.dwVerMajor
Case 4:
win.VersionName = "Windows NT"
Case 5:
Select Case OSVersionInfo.dwVerMinor
Case 0: win.VersionName = "Windows 2000"
Case 1: win.VersionName = "Windows XP"
End Select
End Select
Case VER_PLATFORM_WIN32_WINDOWS:
Select Case OSVersionInfo.dwVerMinor
Case 0: win.VersionName = "Windows 95"
Case 90: win.VersionName = "Windows ME"
Case Else: win.VersionName = "Windows 98"
End Select
End Select
win.VersionNo = OSVersionInfo.dwVerMajor & "." & OSVersionInfo.dwVerMinor
win.BuildNo = (OSVersionInfo.dwBuildNumber And &HFFFF&)
pos = InStr(OSVersionInfo.szCSDVersion, Chr$(0))
If pos Then
win.ServicePack = Left$(OSVersionInfo.szCSDVersion, pos - 1)
End If
#ElseIf Win64 Then
getWindowsVersion = "Windows 64 Bits"
#Else
getWindowsVersion = "Windows 3.X"
#End If
End If
End Sub
Agora crie a chamada para rotina onde preferir
Um exemplo de utilização segue abaixo
Dim win As T_WINVER
getWindowsVersion win
MsgBox "Nome: " & win.VersionName & Chr(13) & _
"ID da Plataforma: " & win.PlatformID & Chr(13) & _
"ServicePack: " & win.ServicePack & Chr(13) & _
"Numero da Versão: " & win.VersionNo & Chr(13) & _
"Build: " & win.BuildNo
Nenhum comentário:
Postar um comentário