Versión de Windows

Versión de Windows

Postby horacio » Thu Jun 05, 2008 4:33 pm

Trabajo FWH 2.7 y necesito saber si estoy en Windows Vista. Mi versión no posee IsVista(). Hay alguna manera. Gracias de antemano
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Versión de Windows

Postby Wanderson » Sat Jun 07, 2008 12:27 am

horacio wrote:Trabajo FWH 2.7 y necesito saber si estoy en Windows Vista. Mi versión no posee IsVista(). Hay alguna manera. Gracias de antemano


Utiliza IsWinVista()

Salu2
Wanderson
 
Posts: 332
Joined: Thu Nov 17, 2005 9:11 pm

Postby horacio » Sat Jun 07, 2008 3:34 pm

Wanderson
Te agradezco tu respuesta pero esa función no es soportada por la version que uso de FWH
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Postby ARCC » Sat Jun 07, 2008 11:14 pm

Buen día para todos...

Que tal Horacio, por favor prueba con esto.

Code: Select all  Expand view  RUN
#include "FiveWin.ch"

Function Main()

  MsgInfo( IsWinVista() )

Return Nil

//----------------------------------------------------------------------------//

Function IsWinVista()

  Local IsWinVista := .F.
  Local aOSInfo := GetVersionEx()

  //Sistema operativo            Mayor Versión (dwMajorVersion)
  //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 Versión (dwMinorVersion)
  //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

  //aOSInfo[ 1 ] = dwMajorVersion
  //aOSInfo[ 2 ] = dwMinorVersion
  //aOSInfo[ 3 ] = dwBuildNumber
  //aOSInfo[ 4 ] = dwPlatformId
  //aOSInfo[ 5 ] = szCSDVersion

  If aOSInfo[ 1 ] = 6 .And. aOSInfo[ 2 ] = 0

     IsWinVista := .T.

  EndIf

Return IsWinVista

//----------------------------------------------------------------------------//

#pragma BEGINDUMP
#include <hbapi.h>
#include <windows.h>

HB_FUNC( GETVERSIONEX )
{
   OSVERSIONINFO OSInfo;

   OSInfo.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );

   GetVersionEx( &OSInfo );

   hb_reta( 5 );
   hb_stornl( OSInfo.dwMajorVersion, -1, 1 );
   hb_stornl( OSInfo.dwMinorVersion, -1, 2 );
   hb_stornl( OSInfo.dwBuildNumber,  -1, 3 );
   hb_stornl( OSInfo.dwPlatformId,   -1, 4 );
   hb_storc(  OSInfo.szCSDVersion,   -1, 5 );
}
#pragma ENDDUMP


Nota: Debe funcionar pero como no tengo Windows Vista no lo puedo probar, allí tiene los valores para reconocer los otros sistemas operativos MS, solo tienes que hacer los If correspondientes y listo. Espero te sirva
Saludos,

Antonio Castro
Maracaibo - Venezuela
ant_cas@yahoo.com
ARCC
 
Posts: 86
Joined: Sat Jun 24, 2006 4:27 pm
Location: Maracaibo - Zulia - Venezuela

Postby ARCC » Sat Jun 07, 2008 11:50 pm

Buen día para todos...

Disculpen, Revisando encontré que FiveWin 7.12 (el que tengo) tiene una función que devuelve un arreglo con el mayor y menor valor de la versión de Windows GetWinVer(). O sea que podemos simplificar el código anterior eliminando la función de C GETVERSIONEX y quedaría de esta forma más corta.

Code: Select all  Expand view  RUN
#include "FiveWin.ch"

Function Main()

  MsgInfo( IsWinVista() )

Return Nil

//----------------------------------------------------------------------------//

Function IsWinVista()

  Local IsWinVista := .F.
  Local aOSInfo := GetWinVer()

  //Sistema operativo              Mayor Versión (dwMajorVersion)
  //Windows NT 3.51                3
  //Windows 95, 98, Me y NT 4.0    4
  //Windows 2000, XP y 2003 Server 5
  //Windows Vista/Longhorn         6
  //-------------------------------------------------------------
  //Sistema operativo              Menor Versión (dwMinorVersion)
  //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 Server            2
  //Windows Vista/Longhorn         0

  //aOSInfo[ 1 ] = dwMajorVersion
  //aOSInfo[ 2 ] = dwMinorVersion
  //aOSInfo[ 3 ] = dwBuildNumber
  //aOSInfo[ 4 ] = dwPlatformId
  //aOSInfo[ 5 ] = szCSDVersion

  If aOSInfo[ 1 ] = 6 .And. aOSInfo[ 2 ] = 0

     IsWinVista := .T.

  EndIf

Return IsWinVista
Saludos,

Antonio Castro
Maracaibo - Venezuela
ant_cas@yahoo.com
ARCC
 
Posts: 86
Joined: Sat Jun 24, 2006 4:27 pm
Location: Maracaibo - Zulia - Venezuela

Postby horacio » Sun Jun 08, 2008 1:25 pm

Arcc
Te agradezco la ayuda. Lo probaré. Muchas gracias
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Postby horacio » Mon Jun 09, 2008 7:37 pm

Arcc,
He probado esta función pero me devuelve aOSInfo[ 1 ] = 5 y aOSInfo[ 2 ] = 1. Lo mismo que Windows XP. Alguna Idea. Gracias.
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Postby ARCC » Tue Jun 10, 2008 4:37 pm

Buen día para todos...

horacio wrote:Arcc,
He probado esta función pero me devuelve aOSInfo[ 1 ] = 5 y aOSInfo[ 2 ] = 1. Lo mismo que Windows XP. Alguna Idea. Gracias.


Que tal Horacio, bueno como te dije no tengo como probar en Vista pero en teoría deberia funcionar como te comente anteriormente, otra idea sería consultar el registro de Windows. Por ejemplo en WinXP puedes hacer lo siguente:

Code: Select all  Expand view  RUN
#include "FiveWin.ch"

#define HKEY_LOCAL_MACHINE 2147483650 // 0x80000002

//*******#####
Function Main()
//*******#####

  Local oReg:=TReg32():New(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion")

  MsgInfo( oReg:Get("ProductName") )
  oReg:Close()

Return Nil


Pero como te comenté no tengo Vista para probar y no sé si mentiene la versión en la misma ruta del registro que XP, pero bueno es una idea donde puedes investigar, voy a tratar de conseguir un PC con Vista para probar
Saludos,

Antonio Castro
Maracaibo - Venezuela
ant_cas@yahoo.com
ARCC
 
Posts: 86
Joined: Sat Jun 24, 2006 4:27 pm
Location: Maracaibo - Zulia - Venezuela

Postby ARCC » Thu Jun 12, 2008 1:14 am

Buen día para todos...

Horacio:

Un amigo me hizo el favor de probar los 2 códigos que te referí en Windows Vista Home Basic y los 2 funcionaron correctamente.
Saludos,

Antonio Castro
Maracaibo - Venezuela
ant_cas@yahoo.com
ARCC
 
Posts: 86
Joined: Sat Jun 24, 2006 4:27 pm
Location: Maracaibo - Zulia - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 16 guests