détecter Vista en VB6

détecter Vista en VB6 - VB/VBA/VBS - Programmation

Marsh Posté le 12-10-2007 à 17:03:01    

Comment faire pour détecter en VB6 le système d'exploltation VISTA .
La focntion ENVIRON("OS" ) ramène dans les deux cas la valeur Windows_NT
 
Par ailleur, comment se fait-il que la police de caractère du forum est tout à coup si minuscule (quasi illisible) ? Et le premier qui me dit de chager la taille du texte a évidement perdu.

Reply

Marsh Posté le 12-10-2007 à 17:03:01   

Reply

Marsh Posté le 12-10-2007 à 18:31:50    

salut,
essaie ca, pour voir si une des réponses peut t'aiguiller :

Code :
  1. Dim varEnv As Variant, intI As Integer
  2.     Dim strMessage As String, v As Variant
  3.     ' Liste des variables d'environnement
  4.     varEnv = Array("ALLUSERSPROFILE", "APPDATA", "COMPUTERNAME", "HOMEDRIVE", "HOMEPATH", _
  5.         "LOGONSERVER", "NUMBER_OF_PROCESSORS", "OS", "PATH", "PATHEXT", "PROCESSOR_ARCHITECTURE", _
  6.         "PROCESSOR_IDENTIFIER", "PROCESSOR_LEVEL", "PROCESSOR_REVISION", "PROMPT", _
  7.         "SYSTEMDRIVE", "SYSTEMROOT", "TEMP", "TMP", "USERDOMAIN", "USERNAME", "USERPROFILE" )
  8.     ' Lecture de toutes les valeurs
  9.     strMessage = ""
  10.     For Each v In varEnv
  11.         strMessage = strMessage & v & " = " & Environ(v) & vbCrLf
  12.     Next
  13.     ' Affichage final
  14.     MsgBox strMessage

Reply

Marsh Posté le 12-10-2007 à 21:25:39    

GetVersionEx (plus d'info )

Reply

Marsh Posté le 15-10-2007 à 11:42:15    

Merci pour vos réponses.
 
GetVersionEx me semble difficile à mettre en oeuvre sous VB6. Par contre, même si ça n'est pas très propre, ENVIRON("ALLUSERPROFILE" ) répond différement sur vista puisque le dossier "ProgramData" est propre à Vista.

Reply

Marsh Posté le 15-10-2007 à 11:44:46    

tu peux faire un instr(ENVIRON("ALLUSERPROFILE" ),"ProgramData" ) alors ?

Reply

Marsh Posté le 15-10-2007 à 12:07:03    

Oui, c'est en effet ce que je vais faire.

Reply

Marsh Posté le 15-10-2007 à 13:03:27    

Connais pas le vb6 alors je sais pas si c'est facile mais le nom de l'OS semble ecrit dans la base des registres sous HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\productname

Reply

Marsh Posté le 15-10-2007 à 15:37:04    

GetVersionEx n'est pas difficile à mettre en oeuvre en VB6 pour peu qu'on s'y connaisse un peu en API Windows sous VB6.
 
Il suffit de déclarer ces lignes :

Public Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128  
End Type
 
Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (LpVersionInformation As OSVERSIONINFO) As Long

et de l'exploiter comme ceci par exemple :

Public Function GetWinPlatform() As Long
    Dim osvi As OSVERSIONINFO
 
    osvi.dwOSVersionInfoSize = Len(osvi)
    If GetVersionEx(osvi) = 0 Then
        Exit Function
    End If
    GetWinPlatform = osvi.dwPlatformId
End Function


Reply

Marsh Posté le 15-10-2007 à 18:58:05    

bmag a écrit :

Oui, c'est en effet ce que je vais faire.


 
faut pas faire ça malheureux, ça va partir en sucette dès que le ALLUSERPROFILE pointera ailleurs.
 
si le système expose des variables, c'est pour éviter d'avoir des applications qui partent en sucette dès que la variable change....

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed