![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Винда [D7, Win95/98, WinME, NT4, Win2k, WinXP]
TSa © (2004-02-21 22:23:00)Как узнать какая Винда на стоит на машине ? спасибо !!
извените что вопрос возможно всех задрал ?
Игорь Шевченко (2004-02-22 23:17:00) [1]
> что в сих переменный есть косяк (в смысле в их значениях),
> и лучше пользоваться API-шными вызовами самостоятелно
Если пальцы сильные, то конечно, можно и по клавишам постучать...
А лучше иметь сильные глаза и посмотреть, что этим переменным присваивается в SysUtils
KSergey (2004-02-22 10:29:00) [2]> Юрий Зотов © (21.02.04 22:56) [2]
Некто Анатолий Подгорецкий с небезызвестным Диджитмэном (или Думкиным? не помню точно) как-то в один голос утверждали, что в сих переменный есть косяк (в смысле в их значениях), и лучше пользоваться API-шными вызовами самостоятелно.
Нет, я прекрасно понимаю, что API-шными же вызовами значение этх переменных и получено, однако вот утверждают же люди... Да и на сайте Подгорецкого есть модуль для получения версии, который вроде как "более правильный".
Вы разделяете их точку зрения?
А может я вообще что-то напутал?
Юрий Зотов (2004-02-22 00:11:00) [3]Короче говоря, достал меня этот вопрос, поэтому набросал тут простенький наборчик функций. Знает все версии Windows, кроме LongHorn (который несложно и добавить).
type
TWin32Version = (wvUnknown, wv32S,
wv95, wv95OSR2, wv98, wv98SE, wvME,
wvNT351, wvNT40, wv2K, wvXP);
const
Win32VersionName: array[TWin32Version] of string =
('Unknown', 'Win32S on Windows 3.1',
'Windows 95', 'Windows 95 OSR2', 'Windows 98', 'Windows 98 SE', 'Windows ME',
'Windows NT 3.51', 'Windows NT 4.0', 'Windows 2000', 'Windows XP');
// Версия в виде перечислимого типа TWin32Version
function GetWin32Version: TWin32Version;
begin
case Win32Platform of
VER_PLATFORM_WIN32s:
Result := wv32S;
VER_PLATFORM_WIN32_WINDOWS:
case Win32MinorVersion of
0: if Win32CSDVersion = 'C' then Result := wv95OSR2 else Result := wv95;
10: if Win32CSDVersion = 'A' then Result := wv98SE else Result := wv98;
90: Result := wvME
else Result := wvUnknown
end;
VER_PLATFORM_WIN32_NT:
case Win32MajorVersion of
3: Result := wvNT351;
4: Result := wvNT40;
5: case Win32MinorVersion of
0: Result := wv2K;
1: Result := wvXP
else Result := wvUnknown
end
else Result := wvUnknown
end
else Result := wvUnknown
end
end;
// Версия в виде 'Micrisoft Windows XXXX'
function GetWin32VersionName: string;
begin
Result := 'Microsoft ' + Win32VersionName[GetWin32Version]
end;
// Версия в виде 'X.XX.XXXX'
function GetWin32VersionNumber: string;
begin
Result := Format('%d.%d.%d', [Win32MajorVersion, Win32MinorVersion, Win32BuildNumber])
end;
// Полная версия, включая последний установленный сервиспак
function GetFullWin32Version: string;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
Result := Format('%s version %s, %s', [GetWin32VersionName, GetWin32VersionNumber, Win32CSDVersion])
else Result := Format('%s version %s', [GetWin32VersionName, GetWin32VersionNumber])
end;
DDA (2004-02-21 23:06:00) [4]Чувствую пора мне уже MSDN иметь.
Юрий Зотов (2004-02-21 22:56:00) [5]В модуле SysUtils есть уже готовые переменные Win32Platform, Win32MajorVersion, Win32MinorVersion, Win32BuildNumber и Win32CSDVersion. А их расшифровка дана в MSDN:
dwMajorVersion
Identifies the major version number of the operating system as follows.
Operating System Value
Windows 95 4
Windows 98 4
Windows Me 4
Windows NT 3.51 3
Windows NT 4.0 4
Windows 2000 5
Whistler 5
dwMinorVersion
Identifies the minor version number of the operating system as follows.
Operating System Value
Windows 95 0
Windows 98 10
Windows Me 90
Windows NT 3.51 51
Windows NT 4.0 0
Windows 2000 0
Whistler 1
dwBuildNumber
Windows NT/2000:Identifies the build number of the operating system.
Windows 95/98:Identifies the build number of the operating system in the low-order word. The high-order word contains the major and minor version numbers.
dwPlatformId
Identifies the operating system platform. This member can be one of the following values.
Value Platform
VER_PLATFORM_WIN32s Win32s on Windows 3.1.
VER_PLATFORM_WIN32_WINDOWS W95, W98, or Me.
VER_PLATFORM_WIN32_NT NT 3.51, NT 4.0, 2K, or Whistler.
szCSDVersion
Windows NT/2000, Whistler:Contains a null-terminated string, such as "Service Pack 3", that indicates the latest Service Pack installed on the system. If no Service Pack has been installed, the string is empty.
Windows 95/98/Me:Contains a null-terminated string that indicates additional version information. For example, " C" indicates Windows 95 OSR2 and " A" indicates Windows 98 SE.
DDA (2004-02-21 22:29:00) [6]Взято из DelphiWorks
function IsNTWorkstation: Boolean;
var
OSVersionInfoEx: TOSVersionInfoEx;
begin
GetWindowsVersionEx(OSVersionInfoEx);
result:= (OSVersionInfoEx.wProductType = VER_NT_WORKSTATION);
end;
function IsNTServer: Boolean;
var
OSVersionInfoEx: TOSVersionInfoEx;
begin
GetWindowsVersionEx(OSVersionInfoEx);
result:= (OSVersionInfoEx.wProductType = VER_NT_SERVER);
end;
function IsDomainController: Boolean;
var
OSVersionInfoEx: TOSVersionInfoEx;
begin
GetWindowsVersionEx(OSVersionInfoEx);
result:= (OSVersionInfoEx.wProductType = VER_NT_DOMAIN_CONTROLLER);
end;
function IsNTMachine: Boolean;
var
OSVersionInfoEx: TOSVersionInfoEx;
begin
GetWindowsVersionEx(OSVersionInfoEx);
result:= ( OSVersionInfoEx.dwPlatformId = VER_PLATFORM_WIN32_NT );
end;
function IsWin95: Boolean;
var
OSVersionInfoEx: TOSVersionInfoEx;
begin
GetWindowsVersionEx(OSVersionInfoEx);
result:= ( OSVersionInfoEx.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS ) and
( OSVersionInfoEx.dwMajorVersion = 4 ) and
( OSVersionInfoEx.dwMinorVersion = 0 );
end;
function IsWin98: Boolean;
var
OSVersionInfoEx: TOSVersionInfoEx;
begin
GetWindowsVersionEx(OSVersionInfoEx);
result:= ( OSVersionInfoEx.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS ) and
( OSVersionInfoEx.dwMajorVersion = 4 ) and
( OSVersionInfoEx.dwMinorVersion = 10 );
end;
function IsWinME: Boolean;
var
OSVersionInfoEx: TOSVersionInfoEx;
begin
GetWindowsVersionEx(OSVersionInfoEx);
result:= ( OSVersionInfoEx.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS ) and
( OSVersionInfoEx.dwMajorVersion = 4 ) and
( OSVersionInfoEx.dwMinorVersion = 90 );
end;
function IsNT351: Boolean;
var
OSVersionInfoEx: TOSVersionInfoEx;
begin
GetWindowsVersionEx(OSVersionInfoEx);
result:= ( OSVersionInfoEx.dwPlatformId = VER_PLATFORM_WIN32_NT ) and
( OSVersionInfoEx.dwMajorVersion = 3 ) and
( OSVersionInfoEx.dwMinorVersion = 51 );
end;
function IsNT4: Boolean;
var
OSVersionInfoEx: TOSVersionInfoEx;
begin
GetWindowsVersionEx(OSVersionInfoEx);
result:= ( OSVersionInfoEx.dwPlatformId = VER_PLATFORM_WIN32_NT ) and
( OSVersionInfoEx.dwMajorVersion = 4 ) and
( OSVersionInfoEx.dwMinorVersion = 0 );
end;
function IsWin2K: Boolean;
var
OSVersionInfoEx: TOSVersionInfoEx;
begin
GetWindowsVersionEx(OSVersionInfoEx);
result:= ( OSVersionInfoEx.dwPlatformId = VER_PLATFORM_WIN32_NT ) and
( OSVersionInfoEx.dwMajorVersion = 5 ) and
( OSVersionInfoEx.dwMinorVersion = 0 );
end;
function IsWinXP: Boolean;
var
OSVersionInfoEx: TOSVersionInfoEx;
begin
GetWindowsVersionEx(OSVersionInfoEx);
result:= ( OSVersionInfoEx.dwPlatformId = VER_PLATFORM_WIN32_NT ) and
( OSVersionInfoEx.dwMajorVersion = 5 ) and
( OSVersionInfoEx.dwMinorVersion = 1 );
end;