[Delphi] Platforma windows...

0

Witam

Wie ktos jak zrobic, ze jak jest win98, to costam, a jak xp, to costam, tzn chodzi mi o same te:
[code]VER_PLATFORM_WIN32s; //win 3.11
VER_PLATFORM_WIN32_WINDOWS; //win 9x
VER_PLATFORM_WIN32_NT; //win NT [/code]tylko ze do wszystkich windowsów, bo pod xp niedziala ;(

0

spróbuj jeżeli ani to ani to ani to to caption:='Windows XP';

0

Wydaje mi sie, ze XP jest oparte na engine 98 (Nie wiem - moge sie mylic - XP nie mialem jeszcze), a funkcja ta zwraca engine: 95/98, NT, 3.1.

Widzisz, te wartosci, ktore podales to sa stale (DWORD). Zobacz w kodzie Windows.pas do jakich wartosci sa przypisane i porownaj z tym, co jest zwracane przez funkcje. Jezeli funkcja zwraca jakas wartosc, ktora nie jest zadeklarowana w Windows.pas (i przypisana do stalej) to sie mylilem i jest inne jaderko. [wstyd]

0

Windows XP jest zbudowany zupełnie inaczej, niż wersje poprzedne. Jest, co prawda, bardzo podobny do 2000, tylko więcej grafiki, ale jądro jest niewiele zmienione. Pomiędzy windowsami wcześniejszymi (3.11,95,98,ME) jest ogromna różnica i budowa jądra jest zupełnie inna.

0

To już było na forum - poszukaj !!!
XP jest na platformie NT i w ten sposób tego nie sprawdzisz trzeba sprawdzić wartość Major(lub Minor - nie pamiętam) i kiedyu zwróci 5....cośtam to jest to XP Ktoś o tym pisał - skorzystaj z wyszukiwarki!!!!

0

Windows XP jest to platforma powstała z Win2000. Windows XP ma numer chyba 6. Bo Windows 2000 ma 5.

0

To napisze mi ktos jak to ma wygladac z tym: VER_PLATFORM_WIN...

0

VER_PLATFORM_WIN32_NT

0

VER_PLATFORM_WIN32_NT
to niedziala ;[

0

Może nie jest to zbyt elegancki sposób, ale działa:

Wstaw na formę: Labela i Buttona

W sekcji uses dodaj moduł: Registry

Dalej wszystko jasne:

procedure TForm1.Button1Click(Sender: TObject);

begin

if (Label1.Caption = 'Microsoft Windows XP') or
(Label1.Caption ='Microsoft Windows 2000') Then
Begin
// Akcja dla rodziny
// NT
end
else
Begin
// Akcja dla rodziny
// WIN 9X i Me
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('\SOFTWARE\Microsoft\Windows NT\CurrentVersion',True);
Label1.Caption := Reg.ReadString('ProductName');
if Label1.Caption = '' Then
Begin
Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion',True);
Label1.Caption := Reg.ReadString('ProductName');
end;
Reg.Free;
end;

Ps.
Dodam to do FAQ

0

Bez zabawy w odczyt z rejestru:

case Win32Platform of
VER_PLATFORM_WIN32_WINDOWS:
begin
Platform:= 'Windows 9x';
BuildNumber:= Win32BuildNumber and $0000FFFF;
end;
VER_PLATFORM_WIN32_NT:
begin
if ((Win32MajorVersion >= 5 ) and (Win32MinorVersion >=1)) then
Platform := 'Windows XP' else Platform := 'Windows NT';
// (tu mozna ewentualnie rozdzielic na NT4 i 2k
// znjac ich major i minor version)

    BuildNumber := Win32BuildNumber;
  end;
else
  begin
    Platform := 'Windows';
    BuildNumber := 0;
  end;

end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1