Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.049 c
1-1081093029
Mishenka
2004-04-04 19:37
2004.04.25
Как распознать катологи?


1-1081356485
ArchAngel
2004-04-07 20:48
2004.04.25
Вопрос по созданию хелпов.


14-1080574261
Igorek
2004-03-29 19:31
2004.04.25
Звуки во время работы


3-1080227024
Andriy Tysh
2004-03-25 18:03
2004.04.25
ClientDataSet.SaveToFile


3-1080716116
Hawk2
2004-03-31 10:55
2004.04.25
Почему Commit не отсылает данные на сервер?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский