Bonjour,
je souhaite detecter la version de win sous la quelle roule mon appli.
Mon appli est en C++. J'utilise Pwlib comme librairie.
Il y a peut etre un moyen a partir du registre, mais je ne l'ai pas trouvé.
Bart
Version imprimable
Bonjour,
je souhaite detecter la version de win sous la quelle roule mon appli.
Mon appli est en C++. J'utilise Pwlib comme librairie.
Il y a peut etre un moyen a partir du registre, mais je ne l'ai pas trouvé.
Bart
Fonction de l'API Win32: GetVersionEx().
voila une petite fonction toute préte tirée de la boite à outils..
le pourquoi du comment..Code:
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 int CMainFrame::GetOSSystem() { OSVERSIONINFOEX osvi; BOOL bOsVersionInfoEx; // Try calling GetVersionEx using the OSVERSIONINFOEX structure. // // If that fails, try using the OSVERSIONINFO structure. ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) ) { // If OSVERSIONINFOEX doesn't work, try OSVERSIONINFO. osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) ) return -1; } if(osvi.dwPlatformId==VER_PLATFORM_WIN32_NT) { if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 ) return 4; return 3; } if(osvi.dwPlatformId==VER_PLATFORM_WIN32s) return 0; if(osvi.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS) { if(osvi.dwMinorVersion==0) return 1; else if(osvi.dwMinorVersion>0) return 2; } return -1; }
le but est de savoir sous quel os on se trouve, hors, getversionex n'est pas toujours disponible, il faut donc se rabattre sur de vieilles fonctions.
le résultat retourné varie de -1 pour erreur à 0->5 pour les versions de win.
Tu devrais utiliser au moins une Enum pour les résultats retournés, plutôt que des valeurs hard-codées. Surtout que celles-ci ne correspondent pas au numéro de version de Windows...