Como saber la version de Windows

Me llamo Jorge.
Mi pregunta es la siguiente:
Necesito saber el sistema operativo sobre el que se ejecuta mi aplicación PB. Es decir necesito diferenciar entre W95 / Nt /2000...
La función de PB GetEnvironment(lenv_env) no me sirve pues no diferencia entre NT y 2000. He intentado llamar al API de Windows, por lo visto la función : Function boolean GetVersionEx (ref OSVERSIONINFO lpVersionInformation) library "kernel32" devuelve dentro de la estructura que se le pasa por referencia lo que necesito. El problema es que no la hago funcionar.
También he intentado sacar la información del registro de windows, pero no encuentro ningún valor que me aseguro lo que busco.
¿Puedes ayuidarme?

1 respuesta

Respuesta
1
Yo hubiera hecho lo mismo que tu, usar GetEnvironment, pero supongo que la version de PB que usas debe ser anterior a Windows 2000. Es probable que con la version 8 de PB que acaba de salir te funcionara GetEnvironment, pero dudo que te arriesgues (yo tampoco lo haría). Llamar a funciones de la API de Windows puede ser complicado, más que nada porque el mapeo de tipos de variables C a tipos PowerBuilder es difícil. Existe un documento en la Web de Sybase de acceso gratuito donde explica todos los detalles sobre el tema. Tendrías que consultar la definición C de la estructura OSVERSIONINFO, e intentar crear una estructura PB equivalente. Existe otra opción bastante más sencilla, se trata de crear una DLL intermedia que acceda a la API de Windows, y llamarla desde PB pasándole argumentos sencillos. En la cabecera de la DLL que contenga tu función puedes importar las definiciones de tipos y funciones del API de Windows.
Lo único es haber usado alguna vez un compilador de C, el Visual C++ por ejemplo.
Es probable que alguien haya tenido tu mismo problema y lo haya solucionado, por lo que podrías consultar los grupos de PB de Google, o las webs dedicadas a PB.
En cuanto al registro, no se si existe alguna clave que informe de la version, ni idea.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas