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

Вниз

Винда   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
14-1081133494
face
2004-04-05 06:51
2004.04.25
Как заработать деньги в инете


14-1080983615
Chahpa
2004-04-03 13:13
2004.04.25
Мышь


1-1081330815
bhy
2004-04-07 13:40
2004.04.25
Как скрыть приложение с панели задач.


1-1081334569
hawkins
2004-04-07 14:42
2004.04.25
запускать только одну копию программы...


1-1081529987
tivispider
2004-04-09 20:59
2004.04.25
Проблема с StringGrid