4 # define WIN32_LEAN_AND_MEAN
5 # include <qt_windows.h>
6 #elif defined Q_OS_LINUX
14 typedef void (__stdcall *NTPROC)(DWORD*, DWORD*, DWORD*);
15 HINSTANCE instance = LoadLibraryA(
"ntdll.dll");
16 DWORD major, minor, buildNumber;
17 NTPROC proc =
TTKVoidCast(NTPROC)GetProcAddress(instance,
"RtlGetNtVersionNumbers");
18 proc(&major, &minor, &buildNumber);
20 if(major == 6 && minor == 1)
24 else if(major == 6 && minor == 2)
28 else if(major == 6 && minor == 3)
32 else if(major == 10 && minor == 0)
36 FreeLibrary(instance);
42 os.dwOSVersionInfoSize =
sizeof(OSVERSIONINFOEX);
43 if(GetVersionEx((OSVERSIONINFO *)&os))
45 switch(os.dwMajorVersion)
48 switch(os.dwMinorVersion)
51 if(os.dwPlatformId == VER_PLATFORM_WIN32_NT)
55 else if(os.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
66 switch(os.dwMinorVersion)
71 if(os.wProductType == VER_NT_WORKSTATION && info.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
75 else if(GetSystemMetrics(SM_SERVERR2) == 0)
79 else if(GetSystemMetrics(SM_SERVERR2) != 0)
87 switch(os.dwMinorVersion)
98 #elif defined Q_OS_LINUX
99 QFile file(
"/etc/lsb-release");
100 if(file.open(QIODevice::ReadOnly))
102 const QRegExp regx(
"DISTRIB_ID=(\\w+)");
103 if(regx.indexIn(QString(file.readAll())) != -1)
105 const QString &system = regx.cap(1).toLower();
107 if(system ==
"ubuntu")
111 else if(system ==
"debian")
115 else if(system ==
"arch")
119 else if(system ==
"centos")
127 #elif defined Q_OS_MAC