Difference between revisions of "Windows version"
From Free Pascal wiki
Jump to navigationJump to searchm (Update for XP64) |
|||
Line 1: | Line 1: | ||
+ | {{Platform only|Windows}} | ||
{{WindowsVersion}} | {{WindowsVersion}} | ||
Revision as of 15:25, 7 September 2020
This article applies to Windows only.
See also: Multiplatform Programming Guide
│
Deutsch (de) │
English (en) │
русский (ru) │
This article is about Windows programming.
The function below determines the number of the current Windows version.
uses
Windows, SysUtils, ...;
...
{
Meaning of Windows version numbers:
5.0 => Windows 2000
5.1 => Windows XP
5.2 => Windows XP64 or Windows 2003 Server
6.0 => Windows Vista or Windows 2008 Server
6.1 => Windows 7 or Windows 2008 Server R2
6.2 => Windows 8 or Windows Server 2012
6.3 => Windows 8.1 or Windows Server 2012 RS
}
function funGetWinVer: string;
// Returns the Windows version number as a string
begin
Result := IntToStr(LOBYTE(LOWORD(GetVersion)));
Result := Result + '.';
Result := Result + IntToStr(HIBYTE(LOWORD(GetVersion)));
end;
Alternatively, the SysUtils unit provides the Windows version information in variables:
program EchoWinVersion;
uses sysutils;
...
begin
Writeln('Win32 Platform : ', Win32Platform );
Writeln('Win32 Major Version: ', Win32MajorVersion);
Writeln('Win32 Minor Version: ', Win32MinorVersion);
Writeln('Win32 Build Number : ', Win32BuildNumber );
Writeln('Win32 CSD Version : ', Win32CSDVersion );
readln;
end.
The output looks like this for Windows 7 Service Pack 1:
Win32 Platform : 2 Win32 Major Version: 6 Win32 Minor Version: 1 Win32 Build Number : 7601 Win32 CSD Version : Service Pack 1
The output looks like this for Windows 10 Pro Build 18362 (64 bit):
Win32 Platform : 2 Win32 Major Version: 6 Win32 Minor Version: 2 Win32 Build Number : 9200 Win32 CSD Version :
which is obviously wrong :( However, the following works for identifying Windows 10 (and before):
...
Uses ..., Win32Proc;
...
Procedure GetWinVer;
Begin
if WindowsVersion = wv95 then Memo.Lines.Add('Windows 95')
else if WindowsVersion = wvNT4 then Memo.Lines.Add('Windows NT v.4')
else if WindowsVersion = wv98 then Memo.Lines.Add('Windows 98')
else if WindowsVersion = wvMe then Memo.Lines.Add('Windows ME')
else if WindowsVersion = wv2000 then Memo.Lines.Add('Windows 2000')
else if WindowsVersion = wvXP then Memo.Lines.Add('Windows XP')
else if WindowsVersion = wvServer2003 then Memo.Lines.Add('Windows Server 2003/Windows XP64')
else if WindowsVersion = wvVista then Memo.Lines.Add('Windows Vista')
else if WindowsVersion = wv7 then Memo.Lines.Add('Windows 7')
else if WindowsVersion = wv10 then Memo.Lines.Add('Windows 10')
else Memo.Lines.Add('Windows Unknown Version!');
End.
For Windows 10 64 bit this outputs "Windows 10".