Форум: Форум C++Разное
Новые темы: 00
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: WinAPI: проверка версии Windows
 
 автор: msdn   (02.02.2012 в 22:34)   письмо автору
 
 

А если наоборот, 100% известно, что ниже такой версии программа не заработает? Как например вырубить программу с выводом сообщения, если версия ниже Windows XP (SP2)?

[поправлено модератором: вопрос выделен из темы Какое значение лучше выставлять для _WIN32_WINNT?]

  Ответить  
 
 автор: cheops   (02.02.2012 в 22:46)   письмо автору
 
   для: 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). Номера версий можно посмотреть в теме откуда нас модератор выделил :)))

  Ответить  
 
 автор: msdn   (03.02.2012 в 00:48)   письмо автору
 
   для: cheops   (02.02.2012 в 22:46)
 

Спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования