Bonjour,
Pour être sur des informations et voir si ce n'est pas un problème de version de ta version beta, regarde les clefs de registre a "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" et regarde "CurrentVersion" et "CurrentBuild". En les mettant ensemble tu as la version complète.
Cordialement,
GallyHC
Mauvais numéro retourné par OSVersion() sous Windows 10
Re: Mauvais numéro retourné par OSVersion() sous Windows 10
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: Mauvais numéro retourné par OSVersion() sous Windows 10
Bonjour,
Comme "Marc56", na pas eu le temps de faire le teste je l'ai fait. La code-source ci-dessous donne "6.2.9200", PAS BON pour "Win10".
Par contre le code ci-dessous donne "6.3.10240", Visiblement bon pour "Win10".
Cordialement,
GallyHC
Comme "Marc56", na pas eu le temps de faire le teste je l'ai fait. La code-source ci-dessous donne "6.2.9200", PAS BON pour "Win10".
Code : Tout sélectionner
Define osv.OSVERSIONINFOEX
osv\dwOSVersionInfoSize=SizeOf(OSVERSIONINFOEX)
If GetVersionEx_(osv) = #True
Debug Str(osv\dwMajorVersion) + "." + Str(osv\dwMinorVersion) + "." + Str(osv\dwBuildNumber)
EndIf
Code : Tout sélectionner
#KEY_WOW64_64KEY = $100
#KEY_WOW64_32KEY = $200
Procedure.s ReadRegKey(OpenKey.i, SubKey.s, ValueName.s)
; ROUTINE DE LECTURE DE CLEF DE REGISTRES.
Define iRes.i = 0
Define hKey.i = 0
Define DataSize.i = 255
Define KeyValue.s = Space(DataSize)
If Left(SubKey, 1) = "\"
SubKey = Right(SubKey, Len(SubKey) - 1)
EndIf
If OSVersion() <= #PB_OS_Windows_2000
iRes = RegOpenKeyEx_(OpenKey, SubKey, 0, #KEY_READ | #KEY_WOW64_32KEY, @hKey)
Else
iRes = RegOpenKeyEx_(OpenKey, SubKey, 0, #KEY_READ | #KEY_WOW64_64KEY, @hKey)
EndIf
If iRes
KeyValue = #NULL$
Else
If RegQueryValueEx_(hKey, ValueName, 0, 0, @KeyValue, @DataSize)
KeyValue = #NULL$
Else
KeyValue = Left(KeyValue, DataSize - 1)
EndIf
RegCloseKey_(hKey)
EndIf
ProcedureReturn KeyValue
EndProcedure
Define sCurrentVer.s = ReadRegKey(#HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CurrentVersion")
Define sCurrentBld.s = ReadRegKey(#HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CurrentBuild")
Debug sCurrentVer + "." + sCurrentBld
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Mauvais numéro retourné par OSVersion() sous Windows 10
Petit source à tester. Pour les noobs (Je ne nommerais personne), pensez à désactiver l'option unicode dans les paramètres de compilation.
PS : De toute façon dans la prochaine version, Fred aura changé sa fonction OSVersion()
Code : Tout sélectionner
Procedure.s NativeGetVersion()
Protected Dim tOSVw.l($54)
lib = LoadLibrary_("ntdll.dll")
proc = GetProcAddress_(lib, "RtlGetVersion")
tOSVw(0) = $54 * $4
CallFunctionFast(proc, @tOSVw())
FreeLibrary_(lib)
ProcedureReturn Str(tOSVw(4)) + "." + Str(tOSVw(1)) + "." + Str(tOSVw(2))
EndProcedure
Procedure.s VersionToName(sVersion.s)
Select sVersion
Case "1.0.0": ProcedureReturn "Windows 95"
Case "1.1.0": ProcedureReturn "Windows 98"
Case "1.9.0": ProcedureReturn "Windows Millenium"
Case "2.3.0": ProcedureReturn "Windows NT 3.51"
Case "2.4.0": ProcedureReturn "Windows NT 4.0"
Case "2.5.0": ProcedureReturn "Windows 2000"
Case "2.5.1": ProcedureReturn "Windows XP"
Case "2.5.3": ProcedureReturn "Windows 2003 (SERVER)"
Case "2.6.0": ProcedureReturn "Windows Vista"
Case "2.6.1": ProcedureReturn "Windows 7"
Case "2.6.2": ProcedureReturn "Windows 8"
Case "2.6.3": ProcedureReturn "Windows 8.1"
Case "2.10.0" : ProcedureReturn "Windows 10.0"
Default: ProcedureReturn sVersion
EndSelect
EndProcedure
Debug VersionToName(NativeGetVersion())
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%