Seite 1 von 2

Windows Version

Verfasst: 12.01.2005 03:55
von Hroudtwolf
Hallo Forum,

Weiss jemand wie man die Windowsversion per API auslesen kann ?
Damit ich in mein Programm eine Versionskontrolle machen kann.

z.B.

If WINDOWVERSION_()<>"XP":End:EndIF

Verfasst: 12.01.2005 04:15
von Deeem2031
Ich frag mich zwar warum es WinAPI sein muss aber egal:

Code: Alles auswählen

OSInfo.OSVERSIONINFO
OSInfo\dwOSVersionInfoSize = SizeOf(OSVERSIONINFO)
If GetVersionEx_(@OSInfo)
  If OSInfo\dwPlatformId = #VER_PLATFORM_WIN32s
    Debug "Platform: Win32s or Windows 3.1"
  ElseIf OSInfo\dwPlatformId = #VER_PLATFORM_WIN32_WINDOWS
    Debug "Platform: Windows 95, Windows 98, Or Windows Me"
  ElseIf OSInfo\dwPlatformId = #VER_PLATFORM_WIN32_NT
    Debug "Platform: Windows NT, Windows 2000, Windows XP, or Windows Server 2003 family"
  EndIf
  
  If OSInfo\dwMajorVersion = 3 And OSInfo\dwMinorVersion = 0 
    Debug "Windows 95"
  ElseIf OSInfo\dwMajorVersion = 4 And OSInfo\dwMinorVersion = 10
    Debug "Windows 98"
  ElseIf OSInfo\dwMajorVersion = 4 And OSInfo\dwMinorVersion = 90
    Debug "Windows ME"
  ElseIf OSInfo\dwMajorVersion = 3 And OSInfo\dwMinorVersion = 51
    Debug "Windows NT 3.51"
  ElseIf OSInfo\dwMajorVersion = 4 And OSInfo\dwMinorVersion = 0
    Debug "Windows NT 4.0"
  ElseIf OSInfo\dwMajorVersion = 5 And OSInfo\dwMinorVersion = 0
    Debug "Windows 2000"
  ElseIf OSInfo\dwMajorVersion = 5 And OSInfo\dwMinorVersion = 1
    Debug "Windows XP"
  ElseIf OSInfo\dwMajorVersion = 5 And OSInfo\dwMinorVersion = 2
    Debug "Windows 2003 Server family"
  EndIf
  If OSInfo\szCSDVersion
    Debug PeekS(@OSInfo\szCSDVersion)
  EndIf
  Debug "Build: "+Str(OSInfo\dwBuildNumber)
EndIf

Verfasst: 12.01.2005 05:17
von Hroudtwolf
Deeem2031 hat geschrieben:Ich frag mich zwar warum es WinAPI sein muss aber egal:
Vielen vielen dank erstmal...

Aber was meinst du damit (ZITAT) ?

Gibt es da etwa nochne Möglichkeit, ausser API ?

Verfasst: 12.01.2005 05:55
von ts-soft
Er meint mit PB, z.B:

Code: Alles auswählen

  Select OSVersion() 
    Case #PB_OS_Windows_98 
      MessageRequester("Info", "Windows 98") 

    Case #PB_OS_Windows_2000 
      MessageRequester("Info", "Windows 2000") 
  
    Case #PB_OS_Windows_XP 
      MessageRequester("Info", "Windows XP") 

    Default 
      MessageRequester("Info", "Nicht unterstützte Windows-Version")    
  EndSelect 

Urg

Verfasst: 12.01.2005 06:01
von Hroudtwolf
Mensch das ist mir jetzt peinlich :oops:

Ich hab jetzt erst 4 Wochen die PB3.92. Vorher hatte ich die TOPOS-Version.
Das gabs dat nich.

Irgendwie hab ich diesen Befehl immer wieder in der Hilfe übersehen.


Aber...Vielen Dank.

Verfasst: 12.01.2005 06:05
von ts-soft
Dieser Befehl existiert erst seit PB 3.40 :mrgreen:

Verfasst: 12.01.2005 15:25
von bluejoke
und die Topos-Version ist 3.3, isn't it?

Verfasst: 15.01.2005 23:05
von Andre
bluejoke hat geschrieben:und die Topos-Version ist 3.3, isn't it?
Yep, aber "nur" die eigentliche Programm-Version.

Das Handbuch usw. wurde noch für die v3.2 geschrieben, da diese eigentlich als die heute bekannte Topos-Version veröffentlich werden sollte.

Verfasst: 16.01.2005 09:37
von DarkDragon
Schau auch mal bei Compilerdirektiven, ist manchmal auch sehr nützlich ;) .

Code: Alles auswählen

CompilerIf #PB_Compiler_OS = #PB_OS_Linux
  ; etwas Linux spezifischer Programmcode..
CompilerEndIf
Dann wird der Linux code nur dann mit im Programm sein, wenn du es unter Linux compillierst ;)

Verfasst: 16.01.2005 12:03
von NetSlayer
Ähm, das was ihr ihm da andreht (also die Konstanten) gibt ihm das Betriebssystem zur Compile-Time an, also nicht zwingend das des Anwenders, was ja wohl Zweck der Sache ist, oder?

API ist also eigentlich schon richtig.