Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: cheops   (02.02.2012 в 22:46)
Для этого обычно используется функция 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). Номера версий можно посмотреть в теме откуда нас модератор выделил :)))


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: