Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Wie kann ich erkennen ob das OS >= Win XP ist. (https://www.delphipraxis.net/65730-wie-kann-ich-erkennen-ob-das-os-%3D-win-xp-ist.html)

turboPASCAL 20. Mär 2006 17:29


Wie kann ich erkennen ob das OS >= Win XP ist.
 
Hi,

Also ich habe mir auf die schnelle eine kleine Funktion geschrieben:

Delphi-Quellcode:
function IsWindowsXP: Boolean;
begin
  Result := (Win32MajorVersion = 5) and ( Win32MinorVersion = 1);
end;
damit lässt sich erkennen ob das OS Windows XP ist. Nun weis ich nicht ob und wie sich das auf höhere Versionen auswirkt.

Ich habe mit:
Delphi-Quellcode:
procedure TForm1.CreateParams(var Params: TCreateParams);
const
  CS_DROPSHADOW = $00020000;
begin
  inherited;
  Params.WindowClass.Style := Params.WindowClass.Style or CS_DROPSHADOW;
end;
einer Form einen Schatten verpasst, Win 2000 kommt damit nicht zurecht. Wie sieht das nun mit
Microsoft Windows Server 2003 aus? Kann die Schatten erzeugen und was ist mit Vista (wird es wohl können)?

(siehe dazu: Windows Version ermitteln )



Delphi-Quellcode:
function IsWindowsXPAndUp: Boolean;
begin
  Result := (Win32MajorVersion >= 5) and ( Win32MinorVersion >= 1);
end;
:gruebel:

3_of_8 20. Mär 2006 17:35

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Nicht grade elegant, aber wirkungsvoll:

Delphi-Quellcode:
try
MakeShadow;
except
end;

turboPASCAL 20. Mär 2006 17:41

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Hm, schon. Das wollte ich ja aber nicht so. ;)

3_of_8 20. Mär 2006 17:46

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Irrelevant. Das ist die effizienteste Möglichkeit.

JocalAreaNetwork 20. Mär 2006 17:56

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Nö, absolut nicht. Wenn es eine Möglichkeit gibt, das über die Versionsnummer festzustellen, ist das um einiges effizienter, als jedes Mal sinnlos zu versuchen einen Schatten zu erstellen.

Dax 20. Mär 2006 19:09

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Deine IsWindowsXPAndUp scheint mir recht vielversprechend zu sein :) Hab leider Windows >= XP zum testen da ;)

@Borgli: Tests mal aus. Deine Lösung ist ziemlich krass... unbrauchbar.

alcaeus 20. Mär 2006 19:15

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Moin,

ich wuerde es so machen:
Delphi-Quellcode:
function IsWindowsXPAndUp: Boolean;
begin
  Result := ((Win32MajorVersion = 5) and (Win32MinorVersion >= 1)) or (Win32MajorVersion > 5);
end;
;)

Greetz
alcaeus

PS: Es ist ausserdem eine Delphi-Frage, ich habs mal dorthin geschoben ;)

[edit]Win43...klar :wall:[/edit]

Luckie 20. Mär 2006 19:21

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Zitat:

Zitat von 3_of_8
Irrelevant. Das ist die effizienteste Möglichkeit.

Sag ich mir auch immer wenn ich Auto fahre und keine Lust habe auf die Ampel zu gucken, Gas geben und druff. Wenns kracht wars eben rot. :?

turboPASCAL 20. Mär 2006 19:29

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Zitat:

Zitat von alcaeus
ich wuerde es so machen...

Jupp, danke. Muss ich mal Testen. Wer hat mal Vista ? ;)

Zitat:

Zitat von alcaeus
PS: Es ist ausserdem eine Delphi-Frage, ich habs mal dorthin geschoben ;)

[edit]Win43...klar :wall:[/edit]

Hatte ich doch ? :gruebel: Nicht ? Sorry. werde halt alt Danke.

@Luckie :mrgreen:

// Edit: Danke vergessen. wie gesagt, werde halt alt...

sh17 20. Mär 2006 19:34

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Zitat:

Zitat von turboPASCAL
Wer hat mal Vista ? ;)

ich.

soll ich testen?

turboPASCAL 20. Mär 2006 19:35

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Ja!

//Edit: Wenn du testest, kannst du auch mal ein Screenshot hier posten ?

sh17 21. Mär 2006 05:07

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Liste der Anhänge anzeigen (Anzahl: 2)
Also ich habe folgendes ausgeführt und es geht:

Delphi-Quellcode:
procedure TForm1.CreateParams(var Params: TCreateParams);
const
  CS_DROPSHADOW = $00020000;
begin
  inherited;
  if IsWindowsXPAndUp then
    Params.WindowClass.Style := Params.WindowClass.Style or CS_DROPSHADOW;
end;
Zum Vergleich auch ein Bild ohne Schatten.

Übrigens hat die Jedi Code Library eine vollständige Funktion zum ermitteln der Windowsversion.

3_of_8 21. Mär 2006 12:25

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von 3_of_8
Irrelevant. Das ist die effizienteste Möglichkeit.

Sag ich mir auch immer wenn ich Auto fahre und keine Lust habe auf die Ampel zu gucken, Gas geben und druff. Wenns kracht wars eben rot. :?

Der Vergleich hinkt an zwei Stellen: Erstens kann man (fast) immer auf die Ampel schauen. Ob obige Funktion immer funktioniert, ist fraglich. Zweitens ist eine abgefangene Exception weniger schlimm als ein Auto, bei dem die Hälfte fehlt.

MagicAndre1981 21. Mär 2006 12:31

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Zitat:

Zitat von 3_of_8
Zweitens ist eine abgefangene Exception weniger schlimm als ein Auto, bei dem die Hälfte fehlt.

Das will ich überhört haben :roll: Exceptions kosten immer. Wenn man mit einer if-Abfrage das gleiche erreicht ist das immer besser.

P.S. übersetze dir mal das Wort Exception :wink:

André

sakura 21. Mär 2006 12:31

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Zitat:

Zitat von 3_of_8
Zweitens ist eine abgefangene Exception weniger schlimm ...

Zeugt von Unkenntnis des Verhaltens von Applikationen mit Exceptions. Speziell wenn man weitere Tools nutzt, um Exceptions (abgefangen oder nicht) zu protokollieren, dann werden solche "schmutzigen" Methoden schnell zu Logfüllern, die nur nerven. Da sollte man dann doch lieber etwas Zeit investieren und es ordentlich machen, zumal man dann mal eine vernünftige Routine hat, welche man immer nutzen kann. Schon mal MakeShadow in einem Hintergrunddienst versucht :roll:

...:cat:...

Angel4585 21. Mär 2006 12:34

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Vielleicht helfen die Schweizer ausnahmnsweise mal... Windowsversion ermitteln

sh17 21. Mär 2006 12:37

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Ich kann ja noch mal auf die Jedi Code Library mit einer vollständigen Funktion zum ermitteln der Windowsversion verweisen.

Luckie 21. Mär 2006 12:38

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
Zu dem generieren Exception zusätzlichen Code für die CPU damit sie weiß, wohin sie zurückspringen kann und dieser ist nicht zu vernachlässigen. Deswegen, wie das Wort Exception schon sagt, dienen Exceptions dazu einen Ausnahmefehler zu behandeln, also, wenn das Programm in einen in definierten Zustand geraten könnte, bei dem die weitere saubere Ausführung nicht mehr gewährleistet ist.

Und der Vergleich hinkt nicht, denn ich kann hier auch immer abfragen, ob ein betriebssystem größer oder gleich Windows XP vorliegt.

Angel4585 21. Mär 2006 12:45

Re: Wie kann ich erkennen ob das OS >= Win XP ist.
 
MSDN-Library durchsuchenGetVersion dann probiers mal damit


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz