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
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().
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
voila une petite fonction toute préte tirée de la boite à outils..
le pourquoi du comment..
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 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...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager