Je voudrais savoir s'il y a une chance de vérifier quelle version de Windows j'utilise vraiment. Quelque chose de similaire à: How do I check OS with a preprocessor directive?.Comment puis-je vérifier la version du système d'exploitation (Windows) avec les directives du préprocesseur?
J'ai essayé le code de MSDN:
- http://msdn.microsoft.com/en-us/library/windows/desktop/ms724451(v=vs.85).aspx
- http://msdn.microsoft.com/en-us/library/windows/desktop/ms724439(v=vs.85).aspx
Mais aucun d'entre eux m'a donné de bons résultats (par exemple: selon http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx mon code devrait imprimer 5.1 quand je suis sur Windows XP mais il a montré 5 ...)
Existe-t-il un moyen fiable (je préférerais des directives de préprocesseur) à f Indiquer quel Windows j'utilise?
Mon code:
#include <windows.h>
#include <iostream>
int main()
{
OSVERSIONINFO osvi;
BOOL bIsWindowsXPorLater;
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
// I HAD THIS, AND IT WAS WRONG! :<
std::cout << osvi.dwMajorVersion << "\n";
// CHANGED THE ABOVE LINE TO THE LINE BELOW AND IT IS OK NOW :D
std::cout << osvi.dwMajorVersion << "." << osvi.dwMinorVersion << "\n";
return 0;
}
Ce serait un peu difficile à mettre en place des directives de préprocesseur. Il y a une raison pour laquelle vous devez indiquer les en-têtes lorsque vous avez besoin d'une fonctionnalité plus récente. – chris
@chris: ok, et sans directives de préprocesseur - est-ce possible? – mazix
Le mieux que je puisse dire est le truc 'GetVersion'. Je ne sais pas pourquoi vous auriez la mauvaise réponse. – chris