Bonjour
D'abord le titre complet
Déterminer la version de Windows à partir de Windows 8.1 .
Dans les anciennes versions de DELPHI (XE starter par exemple)


Traditionnellement la version de Windows était détectée par « GetVersionEx »
Cette fonction est « deprecated » à partir de Windows 8.1 (dixit Microsoft) et il faut utiliser de nouvelles fonctions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
……
IsWindowsVistaSP2OrGreater: Bool; 
Windows7OrGreater: Bool;
IsWindows7SP1OrGreater: Bool; 
IsWindows8OrGreater: Bool;
IsWindows8Point1OrGreater: Booll;
IsWindows8Point1OrGreater: Bool; ;
IsWindows10OrGreater: Bool; 
….
Ces fonctions ne sont pas disponibles dans les anciennes versions de DELPHI (dans mon cas XE starter) Dans les dernières je ne sais pas.

J’ai trouvé une unité pour les utiliser dans les anciennes versions
Problème j’ai testé et c’est Ok pour XP, 8.1 (et sans doute pour les autres versions) mais pour Windows 10 ça bug : La fonction IsWindows10OrGreater renvoie False

Pour information extrait de l’unité pour utiliser ces fonctions
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
 
Const 
WIN32_WINNT_NT4 = $0400;
  WIN32_WINNT_WIN2K = $0500;
  WIN32_WINNT_WINXP = $0501;
  WIN32_WINNT_WS03 = $0502;
  WIN32_WINNT_VISTA = $0600;
  WIN32_WINNT_WS08 = $0600;
  WIN32_WINNT_LONGHORN = $0600;
  WIN32_WINNT_WIN7 = $0601;
  WIN32_WINNT_WIN8 = $0602;
  WIN32_WINNT_WINBLUE = $0603;
  WIN32_WINNT_WIN10 = $0A00;
 
function IsWindows10OrGreater: Bool; stdcall;
 
Implementation
function IsWindows8Point1OrGreater;
begin
  Result := IsWindowsVersionOrGreater(HIBYTE(WIN32_WINNT_WINBLUE),
    LOBYTE(WIN32_WINNT_WINBLUE), 0);
end;
 
function IsWindows10OrGreater ;
// FG bug sous Windows 10 renvie False
begin
  Result := IsWindowsVersionOrGreater(HIBYTE(WIN32_WINNT_WIN10),
    LOBYTE(WIN32_WINNT_WIN10), 0);
end;
Auriez vous une solution pour régler le problème ?