Конференция "WinAPI" » как узнать версии новых windows? [D7, WinXP]
 
  • ruvdos © (25.02.11 16:26) [0]
    драствуйте Уважаемые Мастера!

    В интернете нашел вот такой юнит, я его прикрепил в свой проект (В Unit1 в секции uses добавил WinVer). Он хорош тем, что в него можно добавить вручную версии новых windows.

    На форме есть кнопка. Как сделать, чтобы при нажатии на эту кнопку выводилось сообщение о версии windows на экран ?

    unit WinVer;

    interface

    type
    TWindowsVersion = (
     wvNotInit = 0, wvUnknow,
     wv31, wv95, wv98, wvME,
     wvNT, wvY2K, wvXP, wvServer2003,
     wvVista, wvSeven,
     {add here}
     wvNew = $FF
    );
    //TWinVer = TWindowsVersion; // Так короче :)

    TWindowsVersions = set of TWindowsVersion;
    //TWinVers = TWindowsVersions; // Так короче :)

    TCurWinVer = record
     Version: TWindowsVersion;
     MajorVersion,
     MinorVersion: Byte;
     VersionExtra: Integer;
    end;

    function WinVer: TWindowsVersion;

    var
    CurWinVer: TCurWinVer;
    // SaveWinVer: Byte = $FF;

    implementation

    uses
    Windows;

    function WinVer: TWindowsVersion;
    begin
    if CurWinVer.Version <> wvNotInit then begin
     Result := CurWinVer.Version; // Form cache :)
     Exit;
    end;

    CurWinVer.VersionExtra := GetVersion;
    CurWinVer.MajorVersion := LoByte(CurWinVer.VersionExtra);
    CurWinVer.MinorVersion := HiByte(LoWord(CurWinVer.VersionExtra));

    if {(Integer)}CurWinVer.VersionExtra < 0 then begin
     // http://support.microsoft.com/kb/158238
     case CurWinVer.MajorVersion of
       1, 2: Result := wvUnknow;
       3: Result := wv31; // 3.1 etc
       4: case CurWinVer.MinorVersion of
             0..3: Result := wv95; // 4.00 - 4.03
             10: Result := wv98; // 4.10
             90: Result := wvME; // 4.90
             else Result := wvUnknow;
           end;
       else Result := wvUnknow;
     end
    end else begin // линейка NT
     // http://msdn.microsoft.com/en-us/library/ms724832(VS.85).aspx
     case CurWinVer.MajorVersion of
       1, 2: Result := wvUnknow;
       3, 4: Result := wvNT; // 3.n or 4.n
       5: case CurWinVer.MinorVersion of
             0: Result := wvY2K; // 5.0
             1: Result := wvXP; // 5.1
             2: Result := wvServer2003; // 5.2
             else Result := wvUnknow;
           end;
       6: case CurWinVer.MinorVersion of
             0: Result := wvVista; // 6.0 // or Windows Server 2008
             1: Result := wvSeven; // 6.1 // or Windows Server 2008 R2
             else Result := wvNew;
           end;
       else Result := wvNew;
     end
    end;

    CurWinVer.Version := Result;
    end;

    initialization

    FillChar(CurWinVer, SizeOf(CurWinVer), 0);

    end.


 
Конференция "WinAPI" » как узнать версии новых windows? [D7, WinXP]
Есть новые Нет новых   [134431   +12][b:0][p:0.002]