如何让程序判断正在运行的windows版本号?(50分)

  • 主题发起人 主题发起人 woAidelphi
  • 开始时间 开始时间
W

woAidelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

const strOsType: array[0..7] of string=('osUnknown','osWin95','osWin98','osWin98se','osWinme','osWinnt4','osWin2k','osWinxp');
type OSType=(osUnknown,osWin95,osWin98,osWin98se,osWinme,osWinnt4,osWin2k,osWinxp);

var
Form1: TForm1;

implementation

{$R *.DFM}

Function GetOSVersion : OSType;
Var
osVerInfo : TOSVersionInfo;
majorVer, minorVer : Integer;
Begin

//Result := osUnknown;
osVerInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo );
If ( GetVersionEx( osVerInfo ) ) Then
Begin
majorVer := osVerInfo.dwMajorVersion;
minorVer := osVerInfo.dwMinorVersion;
Case ( osVerInfo.dwPlatformId ) Of
VER_PLATFORM_WIN32_NT : { Windows NT/2000 }
Begin
If ( majorVer <= 4 ) Then
Result := osWinnt4
Else
If ( ( majorVer = 5 ) And ( minorVer= 0 ) ) Then
Result := osWin2k
Else
If ( ( majorVer = 5) And ( minorVer = 1 ) ) Then
Result := osWinxp
Else
Result := OsUnknown;
End;
VER_PLATFORM_WIN32_WINDOWS : { Windows 9x/ME }
Begin

If ( ( majorVer = 4 ) And ( minorVer = 0 ) ) Then
Result := osWin95
Else If ( ( majorVer = 4 ) And ( minorVer = 10 ) ) Then
Begin
If ( osVerInfo.szCSDVersion[ 1 ] = 'A' ) Then
Result := osWin98se
Else
Result := osWin98;
End
Else If ( ( majorVer = 4) And ( minorVer = 90 ) ) Then
Result := OsWinME
Else
Result := OsUnknown;

End;
Else
Result := OsUnknown;
End; //end of case
End Else
Result := OsUnknown;

End;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(strOsType[integer(GetOSVersion)]);
end;

end.
 
The GetVersionEx function obtains extended information about the version of the operating system that is currently running.

BOOL GetVersionEx(

LPOSVERSIONINFO lpVersionInformation // pointer to version information structure
);


Parameters

lpVersionInformation

Pointer to an OSVERSIONINFO data structure that the function fills with operating system version information.
Before calling the GetVersionEx function, set the dwOSVersionInfoSize member of the OSVERSIONINFO data structure to sizeof(OSVERSIONINFO).



Return Values

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError. The function fails if you specify an invalid value for the dwOSVersionInfoSize member of the OSVERSIONINFO structure.

Remarks

The GetVersionEx function supersedes the GetVersion function and is the preferred method for obtaining operating system version number information. New applications should use the GetVersionEx function rather than the GetVersion function.

See Also

OSVERSIONINFO


--------------------
The OSVERSIONINFO data structure contains operating system version information. The information includes major and minor version numbers, a build number, a platform identifier, and descriptive text about the operating system. This structure is used with the GetVersionEx function.

typedef struct _OSVERSIONINFO{
DWORD dwOSVersionInfoSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
DWORD dwPlatformId;
TCHAR szCSDVersion[ 128 ];
} OSVERSIONINFO;


Members

dwOSVersionInfoSize

Specifies the size, in bytes, of this data structure. Set this member to sizeof(OSVERSIONINFO) before calling the GetVersionEx function.

dwMajorVersion

Identifies the major version number of the operating system. For example, for Windows NT version 3.51, the major version number is 3; and for Windows NT version 4.0, the major version number is 4.

dwMinorVersion

Identifies the minor version number of the operating system. For example, for Windows NT version 3.51, the minor version number is 51; and for Windows NT version 4.0, the minor version number is 0.

dwBuildNumber

Windows NT: Identifies the build number of the operating system.
Windows 95: 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 Win32 on Windows 95.
VER_PLATFORM_WIN32_NT Win32 on Windows NT.


szCSDVersion

Windows NT: 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: Contains a null-terminated string that provides arbitrary additional information about the operating system.



See Also

GetVersionEx






 
后退
顶部