Bonjour à toutes et à tous,
J'utilise Visual Basic 2010 Express pour bricoler un peu quelques trucs à mon modeste niveau et, malgré quelques recherches, je n'arrive pas à trouver de code intéressant pour déterminer la version de Windows utilisée sur le poste d'où serait lancée mon exécutable, de Windows 2000 à Windows 7.
J'ai tenté d'adapter ce code :
Mais ce code est issu d'une FAQ VB6, et par exemple "Type" n'est plus utilisable en VB.NET, en tous les cas dans la version de VB 2010 que j'ai téléchargée. Il faut lui préférer l'élément Structure. Du coup je modifie le type de cette manière, afin de pouvoir compiler :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 Private Declare Function GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFOEX) As Integer Private Const VER_PLATFORM_WIN32_WINDOWS = 1 Private Const VER_PLATFORM_WIN32_NT = 2 'wProductType Private Const VER_NT_WORKSTATION = 1 'Windows Vista, Windows XP Professional, Windows XP Home Edition, or Windows 2000 Professional Private Const VER_NT_DOMAIN_CONTROLLER = 2 'Controleur de domaine sous Windows Serveur 2008,2003 ou 2000 Private Const VER_NT_SERVER = 3 'Windows Serveur 2008 , 2003 or 2000 Private Type OSVERSIONINFOEX dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 wServicePackMajor As Integer wServicePackMinor As Integer wSuiteMask As Integer wProductType As Byte wReserved As Byte End Type Public Function VersionWindows(ByRef sp As String) As String Dim os As OSVERSIONINFOEX os.dwOSVersionInfoSize = Len(os) GetVersionExA os sp = "" With os Select Case .dwPlatformId Case VER_PLATFORM_WIN32_WINDOWS Select Case .dwMinorVersion Case 0 VersionWindows = "95" Case 10 VersionWindows = "98" Case 90 VersionWindows = "Me" End Select Case VER_PLATFORM_WIN32_NT Select Case .dwMajorVersion Case 3 VersionWindows = "NT 3.51" Case 4 VersionWindows = "NT 4.0" Case 5 If .dwMinorVersion = 0 Then VersionWindows = "2000" Else VersionWindows = "XP" End If Case 6 If .wProductType = VER_NT_WORKSTATION Then VersionWindows = "Vista" Else VersionWindows = "Windows Server 2008" End If End Select End Select If InStr(.szCSDVersion, Chr(0)) > 0 Then sp = Left(.szCSDVersion, InStr(.szCSDVersion, Chr(0)) - 1) End If End With End Function
Mais d'une je ne sais pas "traduire" en Structure la déclaration String*128, qui n'est pas acceptée à la compilation, et de deux, même si je ne déclare pas cette variable, j'obtiens une erreur de compilation plus tard, à l'exécution de la ligne GetVersionExA(os).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Private Structure OSVERSIONINFOEX Dim dwOSVersionInfoSize As Long Dim dwMajorVersion As Long Dim dwMinorVersion As Long Dim dwBuildNumber As Long Dim dwPlatformId As Long Dim szCSDVersion As String * 128 Dim wServicePackMajor As Integer Dim wServicePackMinor As Integer Dim wSuiteMask As Integer Dim wProductType As Byte Dim wReserved As Byte End Structure
Est-il possible d'adapter le code pour une exécution en VB.NET ? Ou quelles sont les alternatives existantes ? A ce jour je n'ai rien trouvé de très clair (pour moi) sur le sujet...
Merci d'avance pour votre aide
Bonne journée
Partager