Форум: "Система";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизВинда Найти похожие ветки
← →
TSa © (2004-02-21 22:23) [0]Как узнать какая Винда на стоит на машине ? спасибо !!
извените что вопрос возможно всех задрал ?
← →
DDA © (2004-02-21 22:29) [1]Взято из 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;
← →
Юрий Зотов © (2004-02-21 22:56) [2]В модуле 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 23:06) [3]Чувствую пора мне уже MSDN иметь.
← →
Юрий Зотов © (2004-02-22 00:11) [4]Короче говоря, достал меня этот вопрос, поэтому набросал тут простенький наборчик функций. Знает все версии 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;
← →
KSergey © (2004-02-22 10:29) [5]> Юрий Зотов © (21.02.04 22:56) [2]
Некто Анатолий Подгорецкий с небезызвестным Диджитмэном (или Думкиным? не помню точно) как-то в один голос утверждали, что в сих переменный есть косяк (в смысле в их значениях), и лучше пользоваться API-шными вызовами самостоятелно.
Нет, я прекрасно понимаю, что API-шными же вызовами значение этх переменных и получено, однако вот утверждают же люди... Да и на сайте Подгорецкого есть модуль для получения версии, который вроде как "более правильный".
Вы разделяете их точку зрения?
А может я вообще что-то напутал?
← →
Игорь Шевченко © (2004-02-22 23:17) [6]
> что в сих переменный есть косяк (в смысле в их значениях),
> и лучше пользоваться API-шными вызовами самостоятелно
Если пальцы сильные, то конечно, можно и по клавишам постучать...
А лучше иметь сильные глаза и посмотреть, что этим переменным присваивается в SysUtils
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.033 c