Difference between revisions of "Windows version"

From Free Pascal wiki
Jump to navigationJump to search
m (Updated for Win10)
(Added Win10 function)
Line 35: Line 35:
 
program EchoWinVersion;
 
program EchoWinVersion;
 
uses sysutils;
 
uses sysutils;
 +
...
 
begin
 
begin
 
   Writeln('Win32 Platform    : ', Win32Platform    );
 
   Writeln('Win32 Platform    : ', Win32Platform    );
Line 67: Line 68:
 
which is obviously wrong :(
 
which is obviously wrong :(
  
 +
However, this works for identifying Windows 10 (and before):
 +
 +
<syntaxhighlighting lang="pascal">
 +
...
 +
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')
 +
  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.
 +
</syntaxhighlighting>
 +
 +
For Windows 10 64 bit this output "Windows 10".
  
 
{{AutoCategory}}
 
{{AutoCategory}}
 
[[Category:Code Snippets]]
 
[[Category:Code Snippets]]
 
[[Category:Windows]]
 
[[Category:Windows]]

Revision as of 03:52, 26 June 2019

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, this works for identifying Windows 10 (and before):

<syntaxhighlighting lang="pascal"> ... 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')
 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. </syntaxhighlighting>

For Windows 10 64 bit this output "Windows 10".