![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
|||
|
|||
|
Api GetVersionEx
Tengo implementada la api GetVersionEx en delphi y me funciona sin problemas, pero en VB no me detecta el sistema operativo XP , ¿si es la misma api y la misma estructura de la funcion por que no funciona igual?, ¿Alguien sabe como detecto sistema operativo XP con VB me podria ayudar?
Gracias Este es el codigo en VB Código:
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Enum TipoSO
cOsUnknown = 1
cOsWin95 = 2
cOsWin98 = 3
cOsWin98SE = 4
cOsWinME = 5
cOsWinNT = 6
cOsWin2000 = 7
cOsWinXP = 8
End Enum
Type SYSTEM_INFO
dwOemID As Long
dwPageSize As Long
lpMinimumApplicationAddress As Long
lpMaximumApplicationAddress As Long
dwActiveProcessorMask As Long
dwNumberOrfProcessors As Long
dwProcessorType As Long
dwAllocationGranularity As Long
dwReserved As Long
End Type
Public Function SistemaOperativo() As String
Dim osVersion As OSVERSIONINFO
Dim Major As Integer
Dim Minor As Integer
Dim Version As Integer
osVersion.dwOSVersionInfoSize = MAX_LENGTH
If (GetVersionEx(osVersion)) Then
Major = osVersion.dwMajorVersion
Minor = osVersion.dwMinorVersion
Select Case osVersion.dwPlatformId
Case VER_PLATFORM_WIN32_NT 'Windows NT/2000/XP
If (Major <= 4) Then
Version = cOsWinNT
Else
If (Major = 5) And (Minor = 0) Then
Version = cOsWin2000
Else
If (Major = 5) And (Minor = 1) Then
Version = cOsWinXP
Else
Version = cOsUnknown
End If
End If
End If
Case VER_PLATFORM_WIN32_WINDOWS 'Windows 9x/ME
If (Major = 4) And (Minor = 0) Then
Version = cOsWin95
Else
If (Major = 4) And (Minor = 10) Then
If (Mid(osVersion.szCSDVersion, 1, 1) = "A") Then
Version = cOsWin98SE
Else
Version = cOsWin98
End If
Else
If (Major = 4) And (Minor = 90) Then
Version = cOsWinME
Else
Version = cOsUnknown
End If
End If
End If
Case Else
Version = cOsUnknown
End Select
Else
Version = cOsUnknown
End If
Select Case Version
Case cOsUnknown
SistemaOperativo = "(sistema no reconocido)"
Case cOsWin95
SistemaOperativo = "Microsoft Windows 95"
Case cOsWin98
SistemaOperativo = "Microsoft Windows 98"
Case cOsWin98SE
SistemaOperativo = "Microsoft Windows 98 Second Edition"
Case cOsWinME
SistemaOperativo = "Microsoft Windows Millennium Edition"
Case cOsWinNT
SistemaOperativo = "Microsoft Windows NT"
Case cOsWin2000
SistemaOperativo = "Microsoft Windows 2000"
Case cOsWinXP
SistemaOperativo = "Microsoft Windows XP"
Case Else
SistemaOperativo = "Microsoft Windows"
End Select
End Function
Última edición por agonzalez fecha: 07-09-2004 a las 14:48:11. |
|
#2
|
||||
|
||||
|
Hola.
No sos nuevo en el foro. Es de esperar que utilices las etiquetas [code] y/o [delphi] para publicar trozos de código. Te recomiendo editar tu mensaje si esperas que alguien se lo lea para ayudarte, ya que publicado de esta manera es mucho mas dificil de leer. Si no sabes como usar las etiquetas, en mi firma hay un vínculo a la ayuda de code y al inicio de cada foro un mensaje que explica las nuevas etiquetas vB. Hasta luego. ![]() Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#3
|
||||
|
||||
|
Cita:
¿Usar la etiqueta [delphi] para código de Visual Basic? ¡Oh sacrilegio! Y no está de más recordale al compañero agonzalez que si bien alguien puede contestarle, éstos no son foros de Visual Basic. // Saludos |
|
#4
|
||||
|
||||
|
Cita:
![]() Quizas no me expresé bien, pero me refería a usar la etiqueta [code] para vb, y la etiqueta [delphi] para Delphi. Saludos. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#5
|
|||
|
|||
|
Tengo bien claro que no es un foro de VB, espero una respuesta desde el lado de Delphi de pronto la unit de Windows hace algún calculo adicional al que entrega la api en vB. por que de hecho hay diferencias:
Delphi me retorna un Bool, ¿que por sierto no se que es? Supongo un boolean y en VB me retorna un Long Código:
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long Gracias por su atención y por su valiosa ayuda |
|
#6
|
|||
|
|||
|
Cita:
Cita:
![]() Espero te sirva |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|