Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2510 connectés 

 


Dernière réponse
Sujet : [C++] Comment savoir sous quel OS on tourne ??
TheJackal

Code :
  1. BOOL bIsWindowsVersionOK(   DWORD dwWin9xMajor, DWORD dwWin9xMinor,
  2.                             DWORD dwWinNTMajor, DWORD dwWinNTMinor, WORD wWinNTSPMajor )
  3. {
  4.     OSVERSIONINFO           osvi; 
  5.     // Initialize the OSVERSIONINFO structure.
  6.     ZeroMemory( &osvi, sizeof( osvi ) );
  7.     osvi.dwOSVersionInfoSize = sizeof( osvi );   
  8.     GetVersionEx( &osvi );  // Assume this function succeeds.
  9.     // Split code paths for NT and Win9x     
  10.     if( osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS )
  11.     {
  12.         // Check the major version.
  13.         if( osvi.dwMajorVersion > dwWin9xMajor )
  14.             return TRUE;
  15.         else if( osvi.dwMajorVersion == dwWin9xMajor )
  16.         {
  17.             // Check the minor version.
  18.             if( osvi.dwMinorVersion >= dwWin9xMinor )
  19.                 return TRUE;
  20.         }
  21.     }
  22.     else if( osvi.dwPlatformId == VER_PLATFORM_WIN32_NT )
  23.     {
  24.         // Check the major version.
  25.         if( osvi.dwMajorVersion > dwWinNTMajor )
  26.             return TRUE;
  27.         else if( osvi.dwMajorVersion == dwWinNTMajor )
  28.         {
  29.             // Check the minor version.
  30.             if( osvi.dwMinorVersion > dwWinNTMinor )
  31.                 return TRUE;
  32.             else if( osvi.dwMinorVersion == dwWinNTMinor )
  33.             {
  34.                 // Check the service pack.
  35.                 DWORD dwServicePack = 0;
  36.                 if( osvi.szCSDVersion )
  37.                 {
  38.                     _stscanf(   osvi.szCSDVersion,
  39.                                 _T("Service Pack %d" ),
  40.                                 &dwServicePack );
  41.                 }
  42.                 return ( dwServicePack >= wWinNTSPMajor );
  43.             }
  44.         }
  45.     }
  46.     return FALSE;
  47. }


 
source: MSDN News


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
TheJackal

Code :
  1. BOOL bIsWindowsVersionOK(   DWORD dwWin9xMajor, DWORD dwWin9xMinor,
  2.                             DWORD dwWinNTMajor, DWORD dwWinNTMinor, WORD wWinNTSPMajor )
  3. {
  4.     OSVERSIONINFO           osvi; 
  5.     // Initialize the OSVERSIONINFO structure.
  6.     ZeroMemory( &osvi, sizeof( osvi ) );
  7.     osvi.dwOSVersionInfoSize = sizeof( osvi );   
  8.     GetVersionEx( &osvi );  // Assume this function succeeds.
  9.     // Split code paths for NT and Win9x     
  10.     if( osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS )
  11.     {
  12.         // Check the major version.
  13.         if( osvi.dwMajorVersion > dwWin9xMajor )
  14.             return TRUE;
  15.         else if( osvi.dwMajorVersion == dwWin9xMajor )
  16.         {
  17.             // Check the minor version.
  18.             if( osvi.dwMinorVersion >= dwWin9xMinor )
  19.                 return TRUE;
  20.         }
  21.     }
  22.     else if( osvi.dwPlatformId == VER_PLATFORM_WIN32_NT )
  23.     {
  24.         // Check the major version.
  25.         if( osvi.dwMajorVersion > dwWinNTMajor )
  26.             return TRUE;
  27.         else if( osvi.dwMajorVersion == dwWinNTMajor )
  28.         {
  29.             // Check the minor version.
  30.             if( osvi.dwMinorVersion > dwWinNTMinor )
  31.                 return TRUE;
  32.             else if( osvi.dwMinorVersion == dwWinNTMinor )
  33.             {
  34.                 // Check the service pack.
  35.                 DWORD dwServicePack = 0;
  36.                 if( osvi.szCSDVersion )
  37.                 {
  38.                     _stscanf(   osvi.szCSDVersion,
  39.                                 _T("Service Pack %d" ),
  40.                                 &dwServicePack );
  41.                 }
  42.                 return ( dwServicePack >= wWinNTSPMajor );
  43.             }
  44.         }
  45.     }
  46.     return FALSE;
  47. }


 
source: MSDN News

godbout C'est bon y a l'air d'avoir des infos dans GetVerion, j'avais pas vu ;)
 
Par contre la macro je capte toujours pas :D
godbout :D
 
Et comment je peux connaitre alors les differents intervalles que je dois tester ?
 
Au fait c'est une macro ca ?
Comment je recupere la valeur renvoyee par return ? (dsl dans une macro je capte pas)
SoWhatIn22

Godbout a écrit a écrit :

if(winfo.dwMinorVersion<10)
  return W95;
 else
 if(winfo.dwMinorVersion<90)
  return W98;
 else
  return WME;
 
PS: Dans le code la y a pas un pb ?  




 
ah ouais, tiens... en fait, j'ai jamais essayé sous autre chose que NT ou 2000, alors je ne m'en suis même pas rendu compte :D

godbout if(winfo.dwMinorVersion<10)
  return W95;
 else
 if(winfo.dwMinorVersion<90)
  return W98;
 else
  return WME;
 
PS: Dans le code la y a pas un pb ?
godbout Meci pour le code ;)
 
 
En fait mon pb c'est que je veux creer des shortcuts dans le menu demarrer, mais la cle n'est pas dans le meme path sous 2k et 98 (Bravo M$!!), le seul moyen que je trouve c'est de verifier l'OS, mais bon c'est un peu plus degueu...
SoWhatIn22 #define W31  "Windows 3.1"
#define W95  "Windows 95"
#define W98  "Windows 98"
#define WME  "Windows ME"
#define WNT4      "Windows NT 4.0"
#define W2K  "Windows 2000"
 
 
#if defined(WIN32)
 OSVERSIONINFO winfo;
 winfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);

 


 GetVersionEx(&winfo);
 if(winfo.dwPlatformId==VER_PLATFORM_WIN32_NT)
 {
  if(winfo.dwMajorVersion>=5)
   return W2K;
  else
   return WNT4;
 }
 else
 if(winfo.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS
)
 {
  if(winfo.dwMinorVersion<10)
   return W95;
  else
  if(winfo.dwMinorVersion<90)
   return W98;
  else
   return WME;
 }
 else
 if(winfo.dwPlatformId==VER_PLATFORM_WIN32s)
 {
  return W31;
 }
 
 return "?";
#endif

godbout ouaip c'est entre les versions, 98, 2K, etc...
Parce que les cle dans la base de registre ne sont pas les memes des fois et ca me pose un pb
SoWhatIn22 tu veux pouvoir faire la différence entre les différentes versions de windows? ou encore plus (...???)
chrisbk a la compilation ?
 
des gros
 
#ifdef WIN32  
 
devrait faire l'affaire (ou _WIN32 je sais pu trop)
y'a aussi des WINVER et tout ca, regarde dans windows.h c la que ca doit trainer
godbout hein ?

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)