Hola. Quisiera saber si la API GetVersionEx también detecta Windows Vista y en ese caso, como sería.
Gracias de antemano.
Hola, yo creo que no hay ningun problema ¿porque se te ocurre que no va a andar? aparte esta en la dll kernel32.dll una de las mas importantes de todas...podes detectar desde un windows 98 hasta un vista....
saludos.
Cita de: aaronduran2 en 13 Septiembre 2008, 02:58 AM
Hola. Quisiera saber si la API GetVersionEx también detecta Windows Vista y en ese caso, como sería.
Gracias de antemano.
Yo ya e publicado por lo menos 7 veces un code para detectar el windows desde el registro busca un poco mas que me da flojera postearlo pero contestando tu pregunta ve que resultado te da la api en windows vista y va a ser el mismo resultado en todo los win vista.
para despejar todas dudas, aca te pongo la tabla de resultados de la Api GetVersionEx...
Sistema operativo Mayor
_______________ ______
Windows NT 3.51 3
Windows 95, 98, Me y NT 4.0 4
Windows 2000, XP y 2003 5
Windows Vista/Longhorn 6
Sistema operativo Menor
_______________ _______
Windows NT 3.51 51
Windows 95 0
Windows 98 10
Windows Me 90
Windows NT 4.0 0
Windows 2000 0
Windows XP 1
Windows 2003 2
Windows Vista/Longhorn 0
para usarla por ejemplo si te da la mayor un 4 y despues la menor un 90 es Windows Me, si la mayor te da un 5 y despues un 1, es un XP comun ...etc..
saludos.
Esta es la función que yo me hice:
Private Declare Function GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFO) As Integer
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Private Function Win2Version() As String
'Declaramos las variables para esta funcion
Dim OSInf As OSVERSIONINFO, iRet As Integer
OSInf.dwOSVersionInfoSize = 148
OSInf.szCSDVersion = Space$(128)
'Obtenemos la informacion del Window$
iRet = GetVersionExA(OSInf)
'Si no se ha podido obtener correctamente devuelve 'Unknown'
If iRet = 0 Then Win2Version = "Unk": Exit Function
With OSInf
Select Case .dwPlatformId
Case 1
Select Case .dwMinorVersion
Case 0
'En caso de que sea Win95
Win2Version = "95"
Case 10
'En caso de que sea Win98
Win2Version = "98"
Case 90
'En caso de que sea Win Millenium
Win2Version = "Mi"
End Select
Case 2
Select Case .dwMajorVersion
Case 3 Or 4
'En caso de que sea NT (Aqui no he distinguido entre las dos versiones...)
Win2Version = "NT"
Case 5
Select Case .dwMinorVersion
Case 0
'En caso de que sea Win2000
Win2Version = "2000"
Case 1
'En caso de que sea XP
Win2Version = "XP"
Case 2
'En caso de que sea Win2003 (SERVER)
Win2Version = "2003"
End Select
Case 6
'En caso de que sea Win Vista
Win2Version = "Vista"
End Select
Case Else
'En caso de que sea que sea desconocido...
Win2Version = "Unk"
End Select
End With
End Function
Saludos :D
OK, gracias. Había probado lo de Mayor = 6, pero no tengo un Vista donde comprobarlo.
Saludos.
Cita de: aaronduran2 en 14 Septiembre 2008, 00:21 AM
OK, gracias. Había probado lo de Mayor = 6, pero no tengo un Vista donde comprobarlo.
Saludos.
No tenes ningun amigo con vista :huh: :huh:
Cita de: aaronduran2 en 14 Septiembre 2008, 00:21 AM
OK, gracias. Había probado lo de Mayor = 6, pero no tengo un Vista donde comprobarlo.
Saludos.
Yo tengo un NoteBook con vista, probare el code en cuanto pueda ;), pero si no recuerdo mal la ultima vez que lo probé iba sin problema...
Confirmado, detecta el Windows Vista Home Premium :D