Leider ist die Überprüfung mit OSVersion() nicht ausreichend, wenn man auchRSBasic hat geschrieben:Mit OSVersion() kannst du ermitteln, welches Betriebssystem verwendet wird.
Mit folgendem WinAPI-Befehl kann festgestellt werden, ob der User einen klassischen oder einen modernen Design aktiviert hat: http://www.rsbasic.de/aktualisierung/wi ... mitteln.pb
ältere Windows-Versionen unterstützen möchte, die die DLL "UXTheme.DLL"
zur XP-Skin Darstellung noch nicht enthalten. Obwohl man meint, ältere
Windows-Versionen abgefangen zu haben, wird nämlich trotzdem folgende
Fehlermeldung ausgegeben:
Der Grund liegt darin, daß schon beim Start eines Programms alle benötigtenWindows 98 SE hat geschrieben:Fehler beim Starten des Programms.
Die erforderliche DLL-Datei UXTHEME.DLL wurde nicht gefunden.
DLLs auf Vorhandensein geprüft werden und die UXTheme.DLL kann eben z.B.
in Windows 98 nicht gefunden werden. Die einzige Möglichkeit zur Umgehung
dieses Problems besteht darin, die benötigte UXTheme.DLL nur dann mit
OpenLibrary dynamisch zu laden, wenn eine Windows-Version vorliegt, die
diese DLL auch enthält:
Code: Alles auswählen
XPSkinStatus.S = "deaktiviert"
If OSVersion() >= #PB_OS_Windows_XP
LibHandle = OpenLibrary(#PB_Any, "UXTheme.DLL")
If LibHandle
If CallFunction(LibHandle, "IsThemeActive") <> 0
XPSkinStatus = "aktiviert"
EndIf
CloseLibrary(LibHandle)
EndIf
EndIf
MessageRequester("Info", "XP-Skin ist " + XPSkinStatus + "!", #MB_ICONINFORMATION)
hingewiesen, z.B. hier.
Und bevor freundliche Hinweise kommen, daß man statt CallFunction() besser
Prototypes verwenden sollte: in diesem Fall ist die Prototype-Lösung 3 Zeilen
länger und ich möchte ja nur das Prinzip verdeutlichen...
