Hi! Gibt es unter Borland Builder C++ die Möglichkeit festzustellen, welche Betriebssystem gerade läuft? Es muss bestimmt eine API Funktion geben die dies ermöglicht oder?
Die Win32-API-Funktion GetVersionEx machts: osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO) GetVersionEx (&osvi); bIsWindows98orLater = (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) && ( (osvi.dwMajorVersion > 4) || ( (osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion > 0) ) );
Hallo Rufus! Hei Danke für die Info! Leider funktioniert dies bei mir nicht. Kannst du mir ein Beispiel geben? Gruß
am besten doch einfach im msdn nachlesen :) (rufus' beispiel scheint übrigens auch von dort zu stammen) http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getversionex.asp du solltest auch dem link auf der seite zur struktur OSVERSIONINFO folgen.
"Leider funktioniert dies bei mir nicht." Ich liebe so präzise Aussagen. Was soll ich mir daraus zurechtreimen? Dank an Thomas für die Präzisierung; ich hatte allerdings mit der Offline-Version der MSDN gearbeitet und konnte daher keinen Link posten (was hilft euch ein Link auf einen lokalen Netzwerkserver?). Die MSDN-Dokumentation ist (mittlerweile*) ziemlich gut, da auch Rahmenbedingungen (welche Headerdatei muss eingebunden werden, welche Importlibrary muss verwendet werden etc.) beschrieben werden. *) war ein langer Leidensweg. Ich arbeite seit über zwölf Jahren damit.
Ok ich habe mal auf der MSN Seite die Info daz gelesen. So wie es aussieht funktioniert diese Funktion nicht unter Windows95, Windows98 und WIndowsME. Ich brauche aber eine Funktion womit ich feststellen kann, welches Betriebssystem gerade aktiv ist.
"Requires Windows XP, Windows 2000 Professional, Windows NT Workstation 3.5 and later, Windows Me, Windows 98, or Windows 95." ?
wenns nicht klappt, gibts noch ne andere möglichkeit: startbild suchen und texterkennung drüber laufen lassen. bei nt/2k/xp ist das startbild (wenn ich mich recht erinnere) eine ressource in der datei ntoskrnl.exe, welche sich im system32 verzeichnis befinden sollte, bei den anderen versionen war es ne datei namens logo.sys im windows verzeichnis.
Danke für die Unterstützung! Leider bringt mir das jetzt nicht weiter. Gibt es keine gemeinsame API Funktion unter WinNT, Win2000, Win98, WinME womit ich feststellen kann, womit das System gerade läuft?
Der Dokumentation zufolge funktioniert die von mir genannte Funktion auch unter den 9x-Varianten von Windows. Was exakt ist denn das Fehlerverhalten? Du schreibst nur "funktioniert nicht" - was soll diese extrem präzise Formulierung bedeuten? Kann Dein Compiler den Code nicht übersetzen, gibt's 'ne Exception, gibt die Funktion 0 zurück, gibt's 'nen Bluescreen oder was?
Den Code habe ich bei mir in Borland Builder C++ implementiert. Sorry leider weiss ich nicht mehr was der Compiler als Fehlermeldung angegeben hat. Zudem verstehe ich den Code nicht! osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO) GetVersionEx (&osvi); bIsWindows98orLater = (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) && ( (osvi.dwMajorVersion > 4) || ( (osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion > 0) ) ); Welcher Wert wird dann zurückgegeben? Welcher Wert entspricht dann dem aktiven Betriebssystem?
Etwas ausführlicher als das MS'sche Code-Fragment: OSVERSIONINFO osvi; memset(&osvi, 0, sizeof (OSVERSIONINFO)); osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO) GetVersionEx(&osvi); Das ist bereits die ganze Versionsabfrage. BOOL bIsWindows98orLater = (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) && ( (osvi.dwMajorVersion > 4) || ( (osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion > 0) ) ); Das ist eine Auswertung der von GetVersionEx gelieferten Struktur - bIsWindows98orLater wird dem Namen entsprechend gesetzt. Wenn Du Dir die MSDN-Dokumentation, zu der Thomas erfreulicherweise einen Link gepostet hat, mal durchläsest, könntest Du Dir die Funktion der einzelnen Member der Struktur OSVERSIONINFO ansehen.
Ok jetzt habe ich den Code einigermaßen kappiert. BOOL bIsWindows98orLater --> in desem stehet dann drin 1 oder 0. Oder? Welcher Wert erscheint wenn ich WinME oder Win2000 oder WinXP oder WinNT benutze?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.