![]() |
Ermitteln ob im Manifest "Themes" aktiviert wurde?
Kann man per code ermitteln ob ein Projekt die Common-Controls aktiviert hat?
Ich würde das gerne noch in meinem Theming Projekt mit aufnehmen damit zumindest das DarkLight theming deaktiviert werden kann. Der einzige Ansatz der mir einfällt wäre das Manifest auszulesen und zu parsen, da gibt es doch bestimmt eine bessere Lösung, oder? |
AW: Ermitteln ob im Manifest "Themes" aktiviert wurde?
![]() [EDIT] Ups, ist mal wieder eine geheime nicht-öffentliche Funktion. Manchmal möchte man den Entwicklern paar in die Fresse haun.
Delphi-Quellcode:
[/EDIT]
function IsNewCommonCtrl: Boolean; inline;
const ComCtlVersionIE6 = $00060000; begin if Comctl32FileVersion = Cardinal(-1) then Comctl32FileVersion := GetFileVersion(comctl32); Result := Comctl32FileVersion >= ComCtlVersionIE6; end; Siehe auch ![]() Und es gibt noch die globale Variable ![]() (ShowMessage/CreateDialog usw.) |
AW: Ermitteln ob im Manifest "Themes" aktiviert wurde?
Zitat:
|
AW: Ermitteln ob im Manifest "Themes" aktiviert wurde?
Alternativ geht auch
Delphi-Quellcode:
Das haben die besagten Entwickler aber vermutlich auch noch nicht bemerkt.
uses
Vcl.ComCtrls; function IsNewCommonCtrl: Boolean; inline; begin Result := GetComCtlVersion >= ComCtlVersionIE6; // GetComCtlVersion cached den Wert selbst end; |
AW: Ermitteln ob im Manifest "Themes" aktiviert wurde?
Delphi-Quellcode:
So nutze ich es gerade, als property getter in class. Bei meinen jetzigen tests funktioniert es super. (so brauch ich weder Dialogs noch ComCtrls einbinden)
function kzTheme.GetDarkLightSupport: Boolean;
const ComCtlVersionIE6 = $00060000; begin Result := (not (GetFileVersion(comctl32) >= ComCtlVersionIE6)); end;
Delphi-Quellcode:
aber nun entstehen an ganz anderer stelle neue spannende dinge hehehe (dwm arbeitet dann anders...)
property SupportDarkLight: Boolean read GetDarkLightSupport;
Danke für Deinen Beitrag @Uwe! Ich werde es nun auch so anpassen das der Wert nur einmal abgefragt wird (cached), das war nochmal ein guter tipp!! |
AW: Ermitteln ob im Manifest "Themes" aktiviert wurde?
Zitat:
Da wirst du wohl noch einiges tun müssen. Zudem hat es nichts mit DWM zu tun.. oder verwendest du irgendwelchen Code der auf die dwmapi.dll verweist? Nein! Was du hier verwendest ist der Composition Mode (SetWindowCompositionAttribute User32.dll) mit der du die entsprechenden Attribute Blur oder Transparenz setzen kannst. Zitat:
|
AW: Ermitteln ob im Manifest "Themes" aktiviert wurde?
Zitat:
![]() Was ich erreichen wollte mit dieser SetWindowCompositionAttribute methode ist halt das der Hintergrund entsprechend einer Auswahl (Transparent/Blur) gesetzt wird. Danke für Deinen Input! :thumb: :dp: |
AW: Ermitteln ob im Manifest "Themes" aktiviert wurde?
Zitat:
![]() Zitat:
|
AW: Ermitteln ob im Manifest "Themes" aktiviert wurde?
Ich habe mir Dein Video angeschaut und gebe Dir mehr als Recht das da noch vieles unstimmig ist. (Ich nehme an es war mit Manifest Themes aktiviert kompiliert?) (gesehn, ist ohne)
(Du kannst das Video/den Link wieder freigeben/sperren, Danke!) Herausfinden wie man es besser macht ist mein Anliegen, ich werde mich bemühen Informationen zu erhaschen wie man es richtig anwenden sollte. Danke für Dein Feedback! :thumb: Bin dann mal wieder auf der Suche, diese Topic ist beendet ;) |
AW: Ermitteln ob im Manifest "Themes" aktiviert wurde?
Warum LoadLibrary?
Wenn das, dann darf man auch ein FreeLibrary nicht vergessen. User32.dll sollte aber eh immer geladen sein, somit reicht ein GetModuleHandle. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 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