参考: TestOs(CString &osversion) { OSVERSIONINFOEX osvi; BOOL bOsVersionInfoEx; // Try calling GetVersionEx using the OSVERSIONINFOEX structure. // If that fails, try using the OSVERSIONINFO structure. ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) ) { osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) ) return FALSE; } switch (osvi.dwPlatformId) { // Test for the Windows NT product family. case VER_PLATFORM_WIN32_NT: osversion=_T("NT"); break;
case VER_PLATFORM_WIN32_WINDOWS: osversion=_T("98"); break; case VER_PLATFORM_WIN32s: osversion=_T("32"); break; } return TRUE; } 具体例子可以在MSDN中找到。
D7下的代码: if Win32Platform <> VER_PLATFORM_WIN32_NT then WinOSVersion := //Win9X else WinNTOSVersion := Win32MajorVersion*10+Win32MinorVersion;WinNTOSVersion 为4X时就是NT4,50时就是Win2000,51就XP,52就2003最完成版本function TAPIMisc.myGetOSType: TOSType; // by Liu Yang 2002.8.7 var VersionInfo : TOSVersionInfo; begin Result := osUnknown; // set the size of the record VersionInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo ); if Windows.GetVersionEx( VersionInfo ) then begin with VersionInfo do begin case dwPlatformId of VER_PLATFORM_WIN32s : Result := osWin31; VER_PLATFORM_WIN32_WINDOWS : if dwMajorVersion=4 then case dwMinorVersion of 0: Result := osWin95; 10: Result := osWin98; 90: Result := osWinMe; else Result := osUnknown; end else Result := osUnknown; VER_PLATFORM_WIN32_NT : case dwMajorVersion of 3: if dwMinorVersion=51 then Result := osWinNT3 else Result := osUnknown; 4: if dwMinorVersion=0 then Result := osWinNT4 else Result := osUnknown; 5: case dwMinorVersion of 0: Result := osWin2000; 1: Result := osWinXP else Result := osWin2003; end; 6: Result := osLongHorn; else Result := osUnknown; end; end; // case dwPlatformId end; // with VersionInfo end; // if GetVersionEx end;http://lysoft.7u7.net
参考:
TestOs(CString &osversion)
{
OSVERSIONINFOEX osvi;
BOOL bOsVersionInfoEx; // Try calling GetVersionEx using the OSVERSIONINFOEX structure.
// If that fails, try using the OSVERSIONINFO structure. ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )
{
osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) )
return FALSE;
} switch (osvi.dwPlatformId)
{
// Test for the Windows NT product family.
case VER_PLATFORM_WIN32_NT: osversion=_T("NT");
break;
case VER_PLATFORM_WIN32_WINDOWS:
osversion=_T("98");
break;
case VER_PLATFORM_WIN32s:
osversion=_T("32");
break;
}
return TRUE;
}
具体例子可以在MSDN中找到。
then WinOSVersion := //Win9X
else WinNTOSVersion := Win32MajorVersion*10+Win32MinorVersion;WinNTOSVersion 为4X时就是NT4,50时就是Win2000,51就XP,52就2003最完成版本function TAPIMisc.myGetOSType: TOSType; // by Liu Yang 2002.8.7
var
VersionInfo : TOSVersionInfo;
begin
Result := osUnknown;
// set the size of the record
VersionInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo ); if Windows.GetVersionEx( VersionInfo ) then
begin
with VersionInfo do
begin
case dwPlatformId of
VER_PLATFORM_WIN32s : Result := osWin31;
VER_PLATFORM_WIN32_WINDOWS : if dwMajorVersion=4 then
case dwMinorVersion of
0: Result := osWin95;
10: Result := osWin98;
90: Result := osWinMe;
else Result := osUnknown;
end else Result := osUnknown;
VER_PLATFORM_WIN32_NT : case dwMajorVersion of
3: if dwMinorVersion=51
then Result := osWinNT3
else Result := osUnknown;
4: if dwMinorVersion=0
then Result := osWinNT4
else Result := osUnknown;
5: case dwMinorVersion of
0: Result := osWin2000;
1: Result := osWinXP
else Result := osWin2003;
end;
6: Result := osLongHorn;
else Result := osUnknown;
end;
end; // case dwPlatformId
end; // with VersionInfo
end; // if GetVersionEx
end;http://lysoft.7u7.net