Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2011, 19:51   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию Определить операционную систему

В гугле нашёл примеры, которые могут определить ОС только до Win XP. Вот приме. Может, у кого-нибудь есть примеры, которые могут определяться ОС после Win XP?

Последний раз редактировалось Shouldercannon; 02.12.2011 в 19:54.
Shouldercannon вне форума Ответить с цитированием
Старый 02.12.2011, 19:54   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

чем GetVersionEx() не устраивает?
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 02.12.2011, 20:08   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Похоже она может определить только NT, XP and 2000
Shouldercannon вне форума Ответить с цитированием
Старый 02.12.2011, 20:18   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

имхо, совсем не похоже )

Код:
Operating system	Version number	dwMajorVersion	dwMinorVersion	Other
Windows 7	6.1	6	1	OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2008 R2	6.1	6	1	OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Server 2008	6.0	6	0	OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Vista	6.0	6	0	OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2003 R2	5.2	5	2	GetSystemMetrics(SM_SERVERR2) != 0
Windows Home Server	5.2	5	2	OSVERSIONINFOEX.wSuiteMask & VER_SUITE_WH_SERVER
Windows Server 2003	5.2	5	2	GetSystemMetrics(SM_SERVERR2) == 0
Windows XP Professional x64 Edition	5.2	5	2	(OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION) && (SYSTEM_INFO.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
Windows XP	5.1	5	1	Not applicable
Windows 2000	5.0	5	0	Not applicable
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 02.12.2011, 20:41   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Как применить GetVersionEx()?
Shouldercannon вне форума Ответить с цитированием
Старый 02.12.2011, 20:57   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В SysUtils процедура InitPlatformId вызывает эту функцию и формирует кучу глобальных констант

http://www.delphisources.ru/pages/fa...s_version.html
http://superadm.net/index.php?name=pages&op=view&id=180
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.12.2011, 17:51   #7
QunneD
C++ & PHP & Asm
Форумчанин
 
Аватар для QunneD
 
Регистрация: 06.12.2008
Сообщений: 300
По умолчанию

Код:
var
  Os : OSVERSIONINFO;
begin
  Os.dwOSVersionInfoSize := sizeof(Os);
  GetVersionEx(Os);

  if ((Os.dwMinorVersion = 1) and (Os.dwMajorVersion = 5)) then
  begin
    MessageBoxA(0, 'Windows XP', 'Title', 0);
  end
  else if ((Os.dwMinorVersion = 0) and (Os.dwMajorVersion = 6)) then
  begin
    MessageBoxA(0, 'Windows Vista', 'Title', 0);
  end
  else if ((Os.dwMinorVersion = 1) and (Os.dwMajorVersion = 6)) then
  begin
    MessageBoxA(0, 'Windows 7', 'Title', 0);
  end
  else
  begin
    MessageBoxA(0, 'Unknown version', 'Title', 0);
  end;

end;
Тоже самое на С++:

Код:
OSVERSIONINFO Os;
Os.dwOSVersionInfoSize = sizeof(Os);
GetVersionEx((LPOSVERSIONINFO)&Os);

if (Os.dwMajorVersion == 5 && Os.dwMinorVersion == 1)
{
	MessageBoxA(0, "Windows XP", "Title", 0);
} else if (Os.dwMajorVersion == 6 && Os.dwMinorVersion == 0)
{
	MessageBoxA(0, "Windows Vista", "Title", 0);
} else if (Os.dwMajorVersion == 6 && Os.dwMinorVersion == 1)
{
	MessageBoxA(0, "Windows 7", "Title", 0);	
} else
{
	MessageBoxA(0, "Unknown version", "Title", 0);	
}
Всё просто, не правда ли?

Последний раз редактировалось QunneD; 03.12.2011 в 18:06.
QunneD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какую операционную систему вы используете? NORS Операционные системы общие вопросы 129 10.04.2011 14:30
Чего стоит разработать свою операционную систему? panda88 Свободное общение 13 23.07.2010 19:43
Используя операционную систему linux,могу ли я заражать флешку вирусами для Windows? СисТемникс Безопасность, Шифрование 11 08.07.2010 11:39
Как определить Серверную Систему ? user717 Общие вопросы Delphi 0 17.04.2010 06:36
Какую операционную систему вы предпочитаете? Delpher Операционные системы общие вопросы 45 28.03.2009 18:50