Avatar billede kroning Nybegynder
18. november 2009 - 20:03 Der er 9 kommentarer og
1 løsning

GetVersionEx og Windows 7

Jeg bruger denne funktion til at finde ud af hvilken windows der benyttes, kan nogen fortælle mig hvad man skal se efter for at identificere Windows 7?


function GetWinVersion: TWinVersion;
var
  osVerInfo: TOSVersionInfo;
  majorVersion, minorVersion: Integer;
begin
  Result := wvUnknown;
  osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo) ;
  if GetVersionEx(osVerInfo) then
  begin
    minorVersion := osVerInfo.dwMinorVersion;
    majorVersion := osVerInfo.dwMajorVersion;
    case osVerInfo.dwPlatformId of
      VER_PLATFORM_WIN32_NT:
      begin
        if majorVersion <= 4 then
          Result := wvWinNT
        else if (majorVersion = 5) and (minorVersion = 0) then
          Result := wvWin2000
        else if (majorVersion = 5) and (minorVersion = 1) then
          Result := wvWinXP
        else if (majorVersion = 6) then
          Result := wvWinVista;
      end;
      VER_PLATFORM_WIN32_WINDOWS:
      begin
        if (majorVersion = 4) and (minorVersion = 0) then
          Result := wvWin95
        else if (majorVersion = 4) and (minorVersion = 10) then
        begin
          if osVerInfo.szCSDVersion[1] = 'A' then
            Result := wvWin98SE
          else
            Result := wvWin98;
        end
        else if (majorVersion = 4) and (minorVersion = 90) then
          Result := wvWinME
        else
          Result := wvUnknown;
      end;
    end;
  end;
end;
Avatar billede kroning Nybegynder
18. november 2009 - 20:04 #1
Glemte denne:

TWinVersion = (wvUnknown, wvWin95, wvWin98, wvWin98SE, wvWinNT, wvWinME, wvWin2000, wvWinXP, wvWinVista);
Avatar billede arne_v Ekspert
18. november 2009 - 20:09 #2
Jeg mener at 7 er 6.1 altsaa major=6 minor=1
Avatar billede preppydude Nybegynder
18. november 2009 - 20:11 #3
Yep, Windows 7 er NT 6.1. Altså:

type
TWinVersion = (wvUnknown, wvWin95, wvWin98, wvWin98SE, wvWinNT, wvWinME, wvWin2000, wvWinXP, wvWinVista, wvWin7);

function GetWinVersion: TWinVersion;
var
  osVerInfo: TOSVersionInfo;
  majorVersion, minorVersion: Integer;
begin
  Result := wvUnknown;
  osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo) ;
  if GetVersionEx(osVerInfo) then
  begin
    minorVersion := osVerInfo.dwMinorVersion;
    majorVersion := osVerInfo.dwMajorVersion;
    case osVerInfo.dwPlatformId of
      VER_PLATFORM_WIN32_NT:
      begin
        if majorVersion <= 4 then
          Result := wvWinNT
        else if (majorVersion = 5) and (minorVersion = 0) then
          Result := wvWin2000
        else if (majorVersion = 5) and (minorVersion = 1) then
          Result := wvWinXP
        else if (majorVersion = 6) and (minorVersion = 0) then
          Result := wvWinVista
        else if (majorVersion = 6) and (minorVersion = 1) then
          Result := vwWin7;
      end;
      VER_PLATFORM_WIN32_WINDOWS:
      begin
        if (majorVersion = 4) and (minorVersion = 0) then
          Result := wvWin95
        else if (majorVersion = 4) and (minorVersion = 10) then
        begin
          if osVerInfo.szCSDVersion[1] = 'A' then
            Result := wvWin98SE
          else
            Result := wvWin98;
        end
        else if (majorVersion = 4) and (minorVersion = 90) then
          Result := wvWinME
        else
          Result := wvUnknown;
      end;
    end;
  end;
end;
Avatar billede arne_v Ekspert
18. november 2009 - 20:14 #4
Det er dokumenteret paa:

http://msdn.microsoft.com/en-us/library/ms724833.aspx

under "remarks".
Avatar billede kroning Nybegynder
18. november 2009 - 22:55 #5
Smukt, jeg var åbenbart for doven til at finde det selv, bruger jo ofte msdn. Og nej jeg ejer ikke nogle computere med Vista eller Win7 som jeg kunne teste på, men bliver nok nød til snart at få en Win7 inden for døren.
Smid venligst nogle svar.
Avatar billede preppydude Nybegynder
18. november 2009 - 23:05 #6
Her. :)
Avatar billede arne_v Ekspert
23. november 2009 - 22:46 #7
Nogen gange kunne man godt oenske sig at spoergsmaal var lidt mere specifikke. F.eks. i dette her ville "hvordan denne kode skal tilrettes for at identificere Windows 7" fremfor "hvad man skal se efter for at identificere Windows 7" jo have fortalt at det var udvidelse af enumeration og else statement man efterlyste.
Avatar billede arne_v Ekspert
23. november 2009 - 22:48 #8
PS: der kan forekomme lidt syrlig ironi i ovenstaaende.
Avatar billede kroning Nybegynder
23. november 2009 - 23:25 #9
arve_v> Din kommentar var nu alt jeg efterlyste, altså en forklaring af hvad major og minor er ved Windows 7, jeg havde ikke brug for en færdiggørelse af funktionen.
Avatar billede arne_v Ekspert
24. november 2009 - 03:22 #10
Aha ..............
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester