Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.06;
Скачать: CL | DM;

Вниз

Версия Windows   Найти похожие ветки 

 
psa247 ©   (2005-10-11 19:17) [0]

Как узнать о наличии SP1, SP2 в Windows?


 
begin...end ©   (2005-10-11 19:25) [1]

Посмотрите в справке по API описание функции GetVersionEx. Она заполняет структуру OSVERSIONINFO, а в ней есть поле szCSDVersion -- оно и содержит информацию о сервис-паке. Если этой информации будет недостаточно, можно использовать OSVERSIONINFOEX.


 
psa247 ©   (2005-10-11 20:20) [2]

Благодарю


 
psa247 ©   (2005-10-11 20:39) [3]

А Home | Professional ?


 
begin...end ©   (2005-10-11 21:07) [4]

> psa247 ©   (11.10.05 20:39) [3]

А ведь я в [1] прямо написал: "Если этой информации будет недостаточно, можно использовать OSVERSIONINFOEX".

Наверное, не просто так написал ведь? Значит, можно было вначале зайти в MSDN ( http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/osversioninfoex_str.asp ) -- посмотреть на поле wSuiteMask, и... вопрос сразу бы решился.


 
psa247 ©   (2005-10-12 11:17) [5]

Выдает ошибку на OSVersionInfoEx - не существует. В Windows.pas только OSVersionInfoА, OSVersionInfoW


 
psa247 ©   (2005-10-12 13:36) [6]

begin...end ©
Так верно будет?

type
 OSVERSIONINFOEX = packed record
   dwOSVersionInfoSize: DWORD;
   dwMajorVersion: DWORD;
   dwMinorVersion: DWORD;
   dwBuildNumber: DWORD;
   dwPlatformId: DWORD;
   szCSDVersion: array[0..127] of Char;
   wServicePackMajor: WORD;
   wServicePackMinor: WORD;
   wSuiteMask: WORD;
   wProductType: BYTE;
   wReserved: BYTE;
 end;
 TOSVersionInfoEx = OSVERSIONINFOEX;

function GetVersionExA(var VersionInformation : OSVERSIONINFOEX): Bool; stdcall; external "kernel32.dll" name "GetVersionExA";

...
var WinVersion : TOSVERSIONINFOEX;

  WinVersion.dwOSVersionInfoSize:= SizeOf(WinVersion);
  GetVersionExA(WinVersion);
  if(WinVersion.DwMajorVersion =5)and(WinVersion.dwMinorVersion =1)then Result:= True
else exit;
  if WinVersion.wSuiteMask = 768 then tmp:= " Home Edition"
else tmp:= " Professional";

...


 
begin...end ©   (2005-10-12 16:15) [7]

> psa247 ©   (12.10.05 13:36) [6]

Структура OSVERSIONINFOEX описана правильно. Но заново объявлять функцию GetVersionEx вовсе необязательно. И что за загадочное число 768?

Я бы сделал примерно так:

const
 VER_SUITE_PERSONAL = $00000200;
var
 WinVersion: TOSVersionInfoEx;
begin
 WinVersion.dwOSVersionInfoSize := sizeof(WinVersion);
 if GetVersionEx(POSVersionInfo(@WinVersion)^) then
   with WinVersion do
   begin
     if (dwMajorVersion = 5) and (dwMinorVersion = 1) and ((wSuiteMask and VER_SUITE_PERSONAL) <> 0) then
     // Установлена XP Home Edition
   end
end



Страницы: 1 вся ветка

Текущий архив: 2005.11.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.041 c
4-1125583313
AngelFire
2005-09-01 18:01
2005.11.06
Получение уровня привелегий процесса


4-1125652375
Darts
2005-09-02 13:12
2005.11.06
Не могу отцентрировать PropertyPage


14-1129150278
Германн
2005-10-13 00:51
2005.11.06
Непонятный глюк на форуме


3-1127561698
Viper
2005-09-24 15:34
2005.11.06
Типы данных


14-1129529789
12DFBDD
2005-10-17 10:16
2005.11.06
Акция для СМИ