mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
Added OS name and architecture to the about dialog. Also moved GetPlatformName() from the SysInfo plugin to Platform namespace.
This commit is contained in:
@ -56,4 +56,110 @@ Version GetVersion()
|
||||
return s_Version;
|
||||
}
|
||||
|
||||
LPCWSTR GetPlatformName()
|
||||
{
|
||||
OSVERSIONINFOEX osvi = { sizeof(OSVERSIONINFOEX) };
|
||||
if (GetVersionEx((OSVERSIONINFO*)&osvi))
|
||||
{
|
||||
if (osvi.dwMajorVersion == 5)
|
||||
{
|
||||
if (osvi.dwMinorVersion == 2)
|
||||
{
|
||||
return L"Windows 2003";
|
||||
}
|
||||
else if (osvi.dwMinorVersion == 1)
|
||||
{
|
||||
return L"Windows XP";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (osvi.dwMinorVersion == 3 && osvi.wProductType == VER_NT_WORKSTATION)
|
||||
{
|
||||
return L"Windows 8.1";
|
||||
}
|
||||
else if (osvi.dwMinorVersion == 3 && osvi.wProductType != VER_NT_WORKSTATION)
|
||||
{
|
||||
return L"Windows Server 2012 R2";
|
||||
}
|
||||
else if (osvi.dwMinorVersion == 2 && osvi.wProductType == VER_NT_WORKSTATION)
|
||||
{
|
||||
return L"Windows 8";
|
||||
}
|
||||
else if (osvi.dwMinorVersion == 2 && osvi.wProductType != VER_NT_WORKSTATION)
|
||||
{
|
||||
return L"Windows Server 2012";
|
||||
}
|
||||
else if (osvi.dwMinorVersion == 1 && osvi.wProductType == VER_NT_WORKSTATION)
|
||||
{
|
||||
return L"Windows 7";
|
||||
}
|
||||
else if (osvi.dwMinorVersion == 1 && osvi.wProductType != VER_NT_WORKSTATION)
|
||||
{
|
||||
return L"Windows Server 2008 R2";
|
||||
}
|
||||
else if (osvi.dwMinorVersion == 0 && osvi.wProductType == VER_NT_WORKSTATION)
|
||||
{
|
||||
return L"Windows Vista";
|
||||
}
|
||||
else if (osvi.dwMinorVersion == 0 && osvi.wProductType != VER_NT_WORKSTATION)
|
||||
{
|
||||
return L"Windows Server 2008";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return L"Unknown";
|
||||
}
|
||||
|
||||
/*
|
||||
** Returns |true| if the OS architecture can be found (either 32-bit or 64-bit),
|
||||
** or |false| if it cannot be determined.
|
||||
**
|
||||
** Note: IsWow64Process was introduced with Windows XP SP2.
|
||||
*/
|
||||
bool GetPlatformBit(bool& is64Bit)
|
||||
{
|
||||
#if _WIN64
|
||||
|
||||
is64Bit = true;
|
||||
return true;
|
||||
|
||||
#elif _WIN32
|
||||
|
||||
BOOL isWow64 = FALSE;
|
||||
|
||||
LPFN_ISWOW64PROCESS fnIsWow64Process =
|
||||
(LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(L"kernel32"), "IsWow64Process");
|
||||
|
||||
if (fnIsWow64Process)
|
||||
{
|
||||
if (!fnIsWow64Process(GetCurrentProcess(), &isWow64))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isWow64)
|
||||
{
|
||||
is64Bit = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
is64Bit = false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
return false;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
} // namespace Platform
|
@ -21,6 +21,8 @@
|
||||
|
||||
namespace Platform {
|
||||
|
||||
typedef BOOL(WINAPI * LPFN_ISWOW64PROCESS)(HANDLE hProcess, PBOOL Wow64Process);
|
||||
|
||||
enum Version
|
||||
{
|
||||
WinXP,
|
||||
@ -30,6 +32,8 @@ enum Version
|
||||
};
|
||||
|
||||
Version GetVersion();
|
||||
LPCWSTR GetPlatformName();
|
||||
bool GetPlatformBit(bool& is64Bit);
|
||||
|
||||
#define RM_PLATFORM_DECLARE_HELPERS(ver) \
|
||||
inline bool IsAtMost ## ver() { return GetVersion() <= ver; } \
|
||||
|
Reference in New Issue
Block a user