Форум: "Начинающим";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
ВнизВерсия 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.034 c