Un 'bicho alado' de nombre McPegasus decía:
Pues necesito conocer las siguiente Versiones mediante código VBA, del
equipo donde se esté ejecutando el código.
Internet Explorer
Outlook Express
Microsoft Outlook
Sistema Operativo del Wentanucos.
El Búho respondió por partes:
=============================
'version de Windows
'En un Modulo:
Private Declare Function GetVersion Lib "kernel32" () As Long
Public Function GetWinVersion() As String
Dim Ver As Long, WinVer As Long
Ver = GetVersion()
WinVer = Ver And &HFFFF&
GetWinVersion = Format((WinVer Mod 256) + ((WinVer \ 256) / 100), "Fixed")
End Function
Sacado de la Allapi.net
Seguimos buscando las otras...
¿Quiza en el propio Reg de Windows? Es otra posibilidad, quizá la mejor,
pues ahi esta todito...¡¡¡
...continuaba Búho:
En el Registro del Wentanucos:
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\INTERNET EXPLORER\VERSION
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\OUTLOOK EXPRESS\VERSION INFO\CURRENT
Y un Mostruo en programación, llamado Eduardo Olaz, 'lo bordó':
===============================================================
Aquí tienes un bonito código
para leer valores del registro
Tal cual está es para Access 2000 y siguientes.
Al tener tú Access 97 deberás cambiar los parámetros
declarados como ClavesPrincipales por Long
las constantes enumerativas que están en el Enum
ClavesPrincipales deberás declararlas como
constantes normales de tipo long
La forma de ejecutarlo sería así:
Versión de Windows
ValorDeLaClave( _
HKEY_LOCAL_MACHINE, _
"Software\Microsoft\Windows\CurrentVersion", _
"Version")
Devuelve algo así como "Windows 98 "
Versión de Internet Explorer
ValorDeLaClave( _
HKEY_LOCAL_MACHINE, _
"Software\Microsoft\Internet Explorer", _
"Version")
Devuelve algo así como "5.50.4522.1800"
Versión de Outlook Express
ValorDeLaClave( _
HKEY_LOCAL_MACHINE, _
"Software\Microsoft\Outlook Express\Version Info", _
"Current")
Devuelve algo así como "5,50,4522,1200"
De forma similar se puede obtener cualquier dato del registro.
como el de los comentarios:
Carpeta de Word
ValordelaClave ( _
HKEY_CURRENT_USER, _
"Software\Microsoft\Office\9.0\Word\Options", _
"PROGRAMDIR")
Devuelve algo así como
"C:\Archivos de programa\Microsoft Office\Office\"
Carpeta de Macromedia Flash
ValorDeLaClave( _
HKEY_LOCAL_MACHINE, _
"Software\Macromedia\Flash\6\Installation", _
"InstallPath")
Devuelve algo así como
"C:\Archivos de programa\Macromedia\Flash MX"
Y así hasta que te canses...
____________________________________
Option Explicit
Public Enum ClavesPrincipales
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_LOCAL_MACHINE = &H80000002
HKEY_USERS = &H80000003
HKEY_CURRENT_CONFIG = &H80000005
HKEY_DYN_DATA = &H80000006
End Enum
Public Declare Function RegOpenKeyEx _
Lib "advapi32.dll" _
Alias "RegOpenKeyExA" ( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
ByVal ulOptions As Long, _
ByVal samDesired As Long, _
phkResult As Long) _
As Long
Public Declare Function RegCloseKey _
Lib "advapi32.dll" ( _
ByVal hKey As Long) _
As Long
Public Declare Function RegQueryValueEx _
Lib "advapi32.dll" _
Alias "RegQueryValueExA" ( _
ByVal hKey As Long, _
ByVal lpValueName As String, _
ByVal lpReserved As Long, _
lpType As Long, _
lpData As Any, _
lpcbData As Long) _
As Long
' ************ Constantes *************
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Const REG_BINARY = 3
Public Const REG_DWORD = 4
Public Const REG_DWORD_BIG_ENDIAN = 5
Public Const REG_DWORD_LITTLE_ENDIAN = 4
Public Const REG_EXPAND_SZ = 2
Public Const REG_LINK = 6
Public Const REG_MULTI_SZ = 7
Public Const REG_NONE = 0
Public Const REG_RESOURCE_LIST = 8
Public Const REG_SZ = 1 ' Tipo de dato string
Public Const KEY_READ = &H20019
____________________________________
Aquí vienen la función para leer el registro
____________________________________
Option Explicit
'La función ValorDeLaClave(Claveprincipal, SubClave, Sección)
' devuelve el valor de la sección de la clave
' Sólo devuelve datos del tipo cadena
'Por ejemplo
' ValordelaClave (HKEY_CURRENT_USER,
"Software\Microsoft\Office\9.0\Word\Options","PROGRAMDIR")
' (según la configuración del sistema)
' devolverá algo así como:
' "C:\Archivos de programa\Microsoft Office\Office\"
' ValordelaClave (HKEY_LOCAL_MACHINE,"SOFTWARE\MICROSOFT GAMES\AGE OF
EMPIRES\2.0","EXE PATH")
' devolverá, si lo tienes instalado, la ruta del juego
Public Function ValorDeLaClave( _
ByVal Claveprincipal As ClavesPrincipales, _
ByVal SubClave As String, _
ByVal Sección As String) _
As String
'Función desarrollada por Eduardo Olaz
' eduardo@olaz.net
'Última modificación el 13 de diciembre de 2001
Dim hKey As Long ' En hKey se va a cargar el nº de manejador de la clave
del registro
Dim subkey As String ' Nombre de la subclave
Dim strBuffer As String ' Contendrá el valor de la clave del registro
Dim lngTipoDeDato As Long ' Tipo de dato a leer
Dim lngStrBuffer As Long ' Longitud del valor de strBuffer
Dim lngValorDevuelto As Long ' Valor numérico devuelto por la función
API
Dim strClaveprincipal As String
Select Case Claveprincipal
Case HKEY_CLASSES_ROOT
strClaveprincipal = "HKEY_CLASSES_ROOT"
Case HKEY_CURRENT_USER
strClaveprincipal = "HKEY_CURRENT_USER"
Case HKEY_LOCAL_MACHINE
strClaveprincipal = "HKEY_LOCAL_MACHINE"
Case HKEY_USERS
strClaveprincipal = "HKEY_USERS"
Case HKEY_CURRENT_CONFIG
strClaveprincipal = "HKEY_CURRENT_CONFIG"
Case HKEY_DYN_DATA
strClaveprincipal = "HKEY_DYN_DATA"
Case Else
strClaveprincipal = "CLAVE DESCONOCIDA"
End Select
' Abrimos la clave del registro
lngValorDevuelto = RegOpenKeyEx(Claveprincipal, SubClave, 0, KEY_READ,
hKey)
If lngValorDevuelto <> 0 Then
MsgBox "No se puede abrir la Sección " _
& Sección _
& vbCrLf & "de la Clave: " _
& vbCrLf & vbCrLf _
& strClaveprincipal & "\" & SubClave, _
vbCritical, _
" Error al intentar abrir el registro"
Exit Function
End If
' Creamos un Buffer en el que volcar el valor de la clave
strBuffer = Space(255)
lngStrBuffer = 255
' Llamamos a RegQueryValueEx para que vuelque el valor en strBuffer
lngValorDevuelto = RegQueryValueEx( _
hKey, _
Sección, _
0, _
lngTipoDeDato, _
ByVal strBuffer, _
lngStrBuffer)
' Sólo vamos a aceptar una respuesta del tipo cadena
If lngTipoDeDato = REG_SZ Then
' Quitamos los espacios vacíos del buffer
strBuffer = Left(strBuffer, lngStrBuffer)
ValorDeLaClave = strBuffer
Else
' El tipo de dato no es string o se ha escrito mal la sección
ValorDeLaClave = ""
MsgBox "No se puede interpretar el contenido de la Sección " _
& Sección _
& vbCrLf & "de la Clave: " _
& vbCrLf & vbCrLf _
& strClaveprincipal & "\" & SubClave, _
vbCritical, _
" Error al tratar de leer la sección " & Sección
End If
' Cierra la clave del registro
lngValorDevuelto = RegCloseKey(hKey)
End Function
____________________________________
Que os aproveche:
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)