检查视窗版本
Checking the Windows version
我想要一个只针对Windows-XP执行的代码,但我必须检查当前窗口是否是Windows-XP。
wxPlatformInfo windows = wxPlatformInfo::Get();
int winXP[] = { 5,1 };
int winXP64[] = { 5,2 };
if (windows.GetOSMajorVersion() == winXP[0] && windows.GetOSMinorVersion() == winXP[1]) {
wxLogMessage("Windows XP");
} else if (windows.GetOSMajorVersion() == winXP64[0] && windows.GetOSMinorVersion() == winXP64[1]) {
wxLogMessage("Windows XP 64Bit");
}
前面的代码为我提供了了解Windows版本的直接方法。
有没有另一种简短的方法可以给我Windows版本?
但不要忘记(== window-XP not>= windows-XP(?
bool winapi isWindowsXPOrGreater(void(; 在这里查看其他人:https://msdn.microsoft.com/en-US/图书馆/Windows/桌面/DN424972(v=vs.85(.aspx
您已经拥有的内容尽可能短,尽管您应该缓存来自wxPlatformInfo
的结果:
wxPlatformInfo windows = wxPlatformInfo::Get();
int major = windows.GetOSMajorVersion();
int minor = windows.GetOSMinorVersion();
if (major == 5 && minor == 1) {
wxLogMessage("Windows XP");
} else if (major == 5 && minor == 2) {
wxLogMessage("Windows XP 64Bit");
}
否则,请考虑使用VerifyVersionInfo()
让操作系统为您比较版本号:
bool IsWinXP32Bit()
{
OSVERSIONINFOEX osvi = {};
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
osvi.dwMajorVersion = 5;
osvi.dwMinorVersion = 1;
osvi.wServicePackMajor = 0;
osvi.wServicePackMinor = 0;
DWORDLONG dwlConditionMask = 0;
VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, VER_EQUAL);
VER_SET_CONDITION(dwlConditionMask, VER_MINORVERSION, VER_EQUAL);
VER_SET_CONDITION(dwlConditionMask, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
VER_SET_CONDITION(dwlConditionMask, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
return VerifyVersionInfo(&osvi,
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
dwlConditionMask);
}
bool IsWinXP64Bit()
{
OSVERSIONINFOEX osvi = {};
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
osvi.dwMajorVersion = 5;
osvi.dwMinorVersion = 2;
osvi.wServicePackMajor = 0;
osvi.wServicePackMinor = 0;
DWORDLONG dwlConditionMask = 0;
VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, VER_EQUAL);
VER_SET_CONDITION(dwlConditionMask, VER_MINORVERSION, VER_EQUAL);
VER_SET_CONDITION(dwlConditionMask, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
VER_SET_CONDITION(dwlConditionMask, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
return VerifyVersionInfo(&osvi,
VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
dwlConditionMask);
}
...
if (IsWinXP32Bit())
wxLogMessage("Windows XP");
} else if (IsWinXP64Bit()) {
wxLogMessage("Windows XP 64Bit");
}
如果你不反对使用宏,你可以使用
#ifdef WINDOWS_XP
// Code
#elif defined WINDOWS_7
// Other code
#endif
相关文章:
- 在 c++ 中检查 Windows OS 服务器版本
- 如何在SWIG接口文件中检查Lua版本
- 检查视窗版本
- python的版本检查
- 如何检查一个库是否可以由特定的g++版本编译?
- QT版本检查和Qoverload未在范围中定义
- 使用 Eclipse 检查 GCC 版本
- 简单的数组排序/检查 划分和征服版本
- 如何检查特征C 模板库的版本号
- 为什么我不能在这个虚假的OpenGL上下文中检查OpenGL版本
- 如何使用C++检查python版本
- 如何检查我的 gcc 版本
- 检查 Makefile 中使用的 g++ 版本
- 如何检查特定 g++ 版本支持 C++11 的程度
- C++检查两个版本的函数
- 正在检查成员是否存在,可能存在于基类VS2005/08版本中
- 正在检查成员是否存在,可能在基类C++11版本中
- 如何检查OpenGL版本一致性
- 如何在 Linux 中检查正在运行的进程版本读取"ps aux"输出
- 简单的版本检查与Qt