|
|
|
| А если наоборот, 100% известно, что ниже такой версии программа не заработает? Как например вырубить программу с выводом сообщения, если версия ниже Windows XP (SP2)?
[поправлено модератором: вопрос выделен из темы Какое значение лучше выставлять для _WIN32_WINNT?] | |
|
|
|
|
|
|
|
для: msdn
(02.02.2012 в 22:34)
| | Для этого обычно используется функция GetVersion() или GetVersionEx(), последняя как раз позволяет сервис-паки отследить, лучше функцию оформить в виде обертки
// Системные требования
BOOL IsSystemRequirements(
DWORD MajorVersion,
DWORD MinorVersion,
DWORD ServicePackMajor)
{
// Получаем версию Windows
OSVERSIONINFOEX vi;
ZeroMemory(&vi, sizeof(OSVERSIONINFOEX));
vi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
GetVersionEx((LPOSVERSIONINFO)&vi);
// Вычисляем удовлетвояряют ли текущая версия
// требуемым системным требованиям
BOOL version =
(vi.dwMajorVersion > MajorVersion) ||
(vi.dwMajorVersion == MajorVersion &&
vi.dwMinorVersion >= MinorVersion &&
vi.wServicePackMajor >= ServicePackMajor);
return version;
} | тогда код проверки версии может выглядеть следующим образом. Вместо return 0, следует подставить то, что используется для завершения программы.
if(!IsSystemRequirements(5, 1, 2))
{
MessageBox(
NULL,
_T("Для выполнения программы необходима операционная\nсистема не ниже Windows XP (SP2)"),
_T("Системные требования"),
MB_OK | MB_ICONEXCLAMATION);
return 0;
} | Циферки 5 и 1, соответствуют версии 5.1, последний аргумент - сервис пак (если не имеет значения следует ставить 0). Номера версий можно посмотреть в теме откуда нас модератор выделил :))) | |
|
|
|
|
|
|
|
для: cheops
(02.02.2012 в 22:46)
| | Спасибо. | |
|
|
|