FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Versi贸n de Windows
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Versi贸n de Windows
Posted: Thu Jun 05, 2008 04: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

Posts: 332
Joined: Thu Nov 17, 2005 09:11 PM
Re: Versi贸n de Windows
Posted: 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
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Versi贸n de Windows
Posted: Sat Jun 07, 2008 03:34 PM

Wanderson
Te agradezco tu respuesta pero esa funci贸n no es soportada por la version que uso de FWH

Posts: 86
Joined: Sat Jun 24, 2006 04:27 PM
Versi贸n de Windows
Posted: Sat Jun 07, 2008 11:14 PM
Buen d铆a para todos...

Que tal Horacio, por favor prueba con esto.

#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
Posts: 86
Joined: Sat Jun 24, 2006 04:27 PM
Versi贸n de Windows
Posted: 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.

#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
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Versi贸n de Windows
Posted: Sun Jun 08, 2008 01:25 PM

Arcc
Te agradezco la ayuda. Lo probar茅. Muchas gracias

Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Versi贸n de Windows
Posted: Mon Jun 09, 2008 07: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.

Posts: 86
Joined: Sat Jun 24, 2006 04:27 PM
Versi贸n de Windows
Posted: Tue Jun 10, 2008 04: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:

#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
Posts: 86
Joined: Sat Jun 24, 2006 04:27 PM
Versi贸n de Windows
Posted: Thu Jun 12, 2008 01: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

Continue the discussion